@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
Fichier de lots de fenêtres - Suppression du répertoire d'un chemin de fichier
-
29-07-2022 - |
Question
J'essaye de rechercher ma base de code pour tous jscript Répertoires, puis obtenez une liste de fichiers relatifs dans ces répertoires à l'aide du script de lot suivant ...
@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!
)
)
Tout fonctionne comme prévu jusqu'à ce qu'il arrive ...
SET "relativePath=!relativePath:%currentDir%=!"
Je peux comprendre quel format j'ai besoin d'écrire ceci pour tourner ...
c:\dir\jscript\dev\file.js
dans...
file.js
Aidez-vous!
Informations Complémentaires
La configuration du répertoire est la suivante
dir
jscripts
dev
file.js
file2.js
live
file.js
file2.js
dir2
jscripts
dev
file.js
file2.js
live
file.js
file2.js
Je veux tout trouver jscripts Les répertoires, CD en eux, obtiennent une liste de tous les fichiers JS par rapport au dev annuaire
La solution 2
Autres conseils
Pour extraire le nom et l'extension du fichier à partir d'une variable contenant une utilisation complète du chemin %~nx0
un péché
set G=c:\dir\jscript\file.js
echo %~nxG
Citant ce qui suit de Cette réponse à une question similaire
%~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
Ceci est une pâte de copie du "pour /?" commande sur l'invite. J'espère que cela aide.
Lié
Top 10 conseils de lot DOS (oui, lot DOS ...) spectacles BatchParams.bat (lien vers la source en tant que Gist):
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