@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
Файл пакета окон - удаление каталога из пути файла
-
29-07-2022 - |
Вопрос
Я пытаюсь искать свою кодовую базу для всех JScript каталоги, а затем получить список относительных файлов в этих каталогах, используя следующий пакетный скрипт ...
@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!
)
)
Все работает, как и ожидалось, пока не дойдет до ...
SET "relativePath=!relativePath:%currentDir%=!"
Я могу выяснить, в каком формате мне нужно написать это, чтобы повернуть ...
c:\dir\jscript\dev\file.js
в...
file.js
Пожалуйста помоги!
Дополнительная информация
Настройка каталога выглядит следующим образом
dir
jscripts
dev
file.js
file2.js
live
file.js
file2.js
dir2
jscripts
dev
file.js
file2.js
live
file.js
file2.js
Я хочу найти все Jscripts каталоги, CD в них, получите список всех файлов JS относительно разработчика каталог
Решение 2
Другие советы
Чтобы извлечь имя и расширение файла из переменной, содержащей полное использование пути %~nx0
как в
set G=c:\dir\jscript\file.js
echo %~nxG
Цитируя следующее из Этот ответ на аналогичный вопрос
%~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
Это вставка для копирования из "for /?" команда по приглашению. Надеюсь, поможет.
Связанный
10 лучших партийных советов DOS (да, партия DOS ...) шоу BatchParams.bat (Ссылка на источник как суть):
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