@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
Archivo de lotes de ventana: eliminar el directorio de una ruta de archivo
-
29-07-2022 - |
Pregunta
Estoy tratando de buscar mi base de código para todos jscript directorios y luego obtener una lista de archivos relativos dentro de esos directorios utilizando el siguiente script de lotes ...
@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!
)
)
Todo funciona como se esperaba hasta que llegue a ...
SET "relativePath=!relativePath:%currentDir%=!"
Puedo averiguar qué formato necesito escribir esto para girar ...
c:\dir\jscript\dev\file.js
dentro...
file.js
¡Por favor ayuda!
Información Adicional
La configuración del directorio es la siguiente
dir
jscripts
dev
file.js
file2.js
live
file.js
file2.js
dir2
jscripts
dev
file.js
file2.js
live
file.js
file2.js
Quiero encontrar todo jscripts directorios, CD en ellos, obtenga una lista de todos los archivos JS en relación con el desarrollo directorio
Solución 2
Otros consejos
Para extraer el nombre del archivo y la extensión de una variable que contiene un uso de ruta completa %~nx0
como en
set G=c:\dir\jscript\file.js
echo %~nxG
Citando lo siguiente de esta respuesta a una pregunta similar
%~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
Esta es una copia de la "para /?" comando en el mensaje. Espero eso ayude.
Relacionado
Top 10 consejos por lotes de DOS (sí, lote de dos ...) espectáculos Batchparams.bat (enlace a la fuente como una esencia):
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