@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
Arquivo em lote de janela - Removendo o diretório de um caminho de arquivo
-
29-07-2022 - |
Pergunta
Estou tentando pesquisar minha base de código para todos JScript diretórios e, em seguida, obtenha uma lista de arquivos relativos nesses diretórios usando o seguinte script em lote ...
@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!
)
)
Tudo funciona como o esperado até chegar a ...
SET "relativePath=!relativePath:%currentDir%=!"
Eu posso descobrir em qual formato preciso escrever isso para virar ...
c:\dir\jscript\dev\file.js
em...
file.js
Por favor ajude!
Informação adicional
A configuração do diretório é a seguinte
dir
jscripts
dev
file.js
file2.js
live
file.js
file2.js
dir2
jscripts
dev
file.js
file2.js
live
file.js
file2.js
Eu quero encontrar tudo jscripts Diretórios, CD neles, obtenha uma lista de todos os arquivos JS em relação ao dev diretório
Solução 2
Outras dicas
Para extrair o nome do arquivo e a extensão de uma variável que contém um uso completo do caminho %~nx0
como em
set G=c:\dir\jscript\file.js
echo %~nxG
Citando o seguinte Esta resposta para uma pergunta semelhante
%~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 é uma pasta de cópia do "for /?" comando no prompt. Espero que ajude.
Relacionado
Top 10 dicas de lote de DOS (sim, lote do DOS ...) shows Batchparams.bat (Link para a fonte como uma essência):
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