@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
Fenster-Batchdatei – Entfernen des Verzeichnisses aus einem Dateipfad
-
29-07-2022 - |
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
Lösung 2
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