Получить имя файла в пакете для цикла - PullRequest
39 голосов
/ 09 июля 2009

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

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

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

Ответы [ 4 ]

75 голосов
/ 09 июля 2009

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

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

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

4 голосов
/ 18 июня 2010

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

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

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

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

3 голосов
/ 24 января 2012

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

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
)
0 голосов
/ 03 января 2018

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

FOR /R C:\Directory %F in (*.*) do echo %~nxF
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...