it-swarm.com.ru

Получить имя файла в пакете для цикла

У меня есть следующий цикл For в командном файле:

for /R c:\test\src %%i IN (*.*) DO (
MOVE %%i C:\test\destination
ECHO %%i
exit
)

Результат ECHO выводит полный путь к файлу, например: C:\Foldername\Filename Мне нужно ECHO только из Filename . Есть ли конкретная команда, которая дала бы мне имя файла? Спасибо !

39
Murtaza Mandvi

Когда включены расширения команд (Windows XP и более новые, примерно), вы можете использовать синтаксис% ~ nF (где F - переменная, а ~ n - запрос ее имени), чтобы получить только имя файла.

FOR /R C:\Directory %F in (*.*) do echo %~nF

следует отображать только имена файлов.

74
AKX

или просто% ~ F даст вам полный путь и полное имя файла.

Например, если вы хотите зарегистрировать все файлы * .ax в текущем каталоге ....

FOR /R C:. %F in (*.ax) do regsvr32 "%~F"

Это прекрасно работает в Win7 (64 бит) :-)

4
Chris

Я немного опоздал, но я использовал это:

dir /B *.* > dir_file.txt

тогда вы можете сделать простой цикл FOR, чтобы извлечь имя файла и использовать их. например:

for /f "tokens=* delims= " %%a in (dir_file.txt) do (
gawk -f awk_script_file.awk %%a
)

или сохраните их в Vars (! N1 !,! N2! ..! Nn!) для дальнейшего использования. например:

set /a N=0
for /f "tokens=* delims= " %%a in (dir_file.txt) do (
set /a N+=1
set v[!N!]=%%a
)
3
Guy Soffer

Если вы хотите сохранить как имя файла (только), так и расширение, вы можете использовать %~nxF

0
Gophern Kwok