ملف دفعة نافذة - إزالة الدليل من مسار الملف

StackOverflow https://stackoverflow.com/questions/19855721

  •  29-07-2022
  •  | 
  •  

سؤال

أحاول البحث في قاعدة الرموز الخاصة بي للجميع JScript الدلائل ثم احصل على قائمة بالملفات النسبية داخل تلك الدلائل باستخدام البرنامج النصي الدُفعات التالي ...

@echo off

setlocal enableextensions enabledelayedexpansion

FOR /F "tokens=*" %%G IN ('DIR /B /AD /S jscripts') DO (
    CD %%G
    CD dev

    SET "currentDir=!cd!"
    IF NOT "!currentDir:~-1!"=="\" SET "currentDir=!currentDir!\"

    FOR /r %%F IN (*.js) DO (
        SET "relativePath=%%F"
        SET "relativePath=!relativePath:%currentDir%=!"

        ECHO !relativePath!
    )
)

كل شيء يعمل كما هو متوقع حتى يصل إلى ...

SET "relativePath=!relativePath:%currentDir%=!"

يمكنني معرفة التنسيق الذي أحتاجه لكتابة هذا لتحويل ...

c:\dir\jscript\dev\file.js

داخل...

file.js

الرجاء المساعدة!


معلومات إضافية

إعداد الدليل كما يلي

dir
    jscripts
        dev
            file.js
            file2.js
        live
            file.js
            file2.js


dir2
    jscripts
        dev
            file.js
            file2.js
        live
            file.js
            file2.js

أريد أن أجد كل شيء JScripts الدلائل ، قرص مضغوط فيها ، احصل على قائمة بجميع ملفات JS بالنسبة إلى Dev الدليل

هل كانت مفيدة؟

المحلول 2

@echo off
setlocal enableextensions enabledelayedexpansion

rem Where to start
pushd "c:\wherever\global2_root\"

rem Search .....\dev directories
for /f "tokens=*" %%d in ('dir /ad /s /b ^| findstr /e "\\dev"') do (
    rem change to that directory
    pushd "%%~fd"
    echo Now in !cd!
    rem process files inside directory
    for %%f in (*.js) do (
        echo %%f
    )
    rem return to previous directory
    popd
)
rem return to initial directory
popd

rem cleanup 
endlocal

نصائح أخرى

لاستخراج اسم الملف والتمديد من متغير يحتوي على استخدام مسار كامل %~nx0 كما في

set G=c:\dir\jscript\file.js
echo %~nxG

نقلا عن ما يلي من هذه الإجابة على سؤال مماثل

%~I         - expands %I removing any surrounding quotes (")
%~fI        - expands %I to a fully qualified path name
%~dI        - expands %I to a drive letter only
%~pI        - expands %I to a path only
%~nI        - expands %I to a file name only
%~xI        - expands %I to a file extension only
%~sI        - expanded path contains short names only
%~aI        - expands %I to file attributes of file
%~tI        - expands %I to date/time of file
%~zI        - expands %I to size of file

The modifiers can be combined to get compound results:
%~dpI       - expands %I to a drive letter and path only
%~nxI       - expands %I to a file name and extension only
%~fsI       - expands %I to a full path name with short names only

هذه نسخة معجون من "لـ /؟" الأمر على الموجه. أتمنى أن يساعد ذلك.

متعلق ب

أعلى 10 نصائح الدُفعات DOS (نعم ، دفعة DOS ...) عروض Batchparams.bat (رابط إلى المصدر كموهر):

C:\Temp>batchparams.bat c:\windows\notepad.exe
%~1     =      c:\windows\notepad.exe
%~f1     =      c:\WINDOWS\NOTEPAD.EXE
%~d1     =      c:
%~p1     =      \WINDOWS\
%~n1     =      NOTEPAD
%~x1     =      .EXE
%~s1     =      c:\WINDOWS\NOTEPAD.EXE
%~a1     =      --a------
%~t1     =      08/25/2005 01:50 AM
%~z1     =      17920
%~$PATHATH:1     =
%~dp1     =      c:\WINDOWS\
%~nx1     =      NOTEPAD.EXE
%~dp$PATH:1     =      c:\WINDOWS\
%~ftza1     =      --a------ 08/25/2005 01:50 AM 17920 c:\WINDOWS\NOTEPAD.EXE
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top