Frage

Ich versuche, meine Codebasis nach allen zu durchsuchen jscript Verzeichnisse und rufen Sie dann mit dem folgenden Batch-Skript eine Liste der relativen Dateien in diesen Verzeichnissen ab ...

@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!
    )
)

Es funktioniert alles wie erwartet, bis es ...

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

Ich kann herausfinden, in welchem ​​Format ich das schreiben muss, um ...

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

hinein...

file.js

Bitte helfen Sie!


Weitere Informationen

Die Verzeichniseinrichtung ist wie folgt

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


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

Ich möchte alles finden jscripts Verzeichnisse, CD hinein, eine Liste aller JS-Dateien erhalten relativ zum Entwickler Verzeichnis

War es hilfreich?

Lösung 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

Andere Tipps

Um den Dateinamen und die Erweiterung aus einer Variablen zu extrahieren, die einen vollständigen Pfad enthält, verwenden Sie %~nx0 wie in

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

Ich zitiere Folgendes aus diese Antwort auf eine ähnliche Frage

%~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

Dies ist eine Kopierpaste aus der "für /?" Befehl auf der Eingabeaufforderung.Ich hoffe es hilft.

Verwandt

Die 10 besten DOS-Batch-Tipps (Ja, DOS-Batch ...) zeigt an batchparams.bat (Link zur Quelle als Zusammenfassung):

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top