Я пытаюсь написать быструю пакетную программу, которая будет либо копировать имена файлов в папке или этой папке и подпапках. У меня проблема в том, что я не хочу имен каталогов.

Вот мой код:

if %_JOB%! NEQ ! set _JOB=%_JOB%-
if %_FOLDERS%! == y! set _FOLDERS=Y

echo Created %cdate% > "C:\Users\%username%\Desktop\%_JOB%PDFlist.txt"
echo Folder: %CD% >> "C:\Users\%username%\Desktop\%_JOB%PDFlist.txt"
if %_FOLDERS%! == Y! (
  echo Include sub-folders: True >> "C:\Users\%username%\Desktop\%_JOB%PDFlist.txt"
) ELSE (
echo Include sub-folders: False >> "C:\Users\%username%\Desktop\%_JOB%PDFlist.txt"
)
echo. >> "C:\Users\%username%\Desktop\%_JOB%PDFlist.txt"
echo ============================== BEGIN LIST ============================== >> "C:\Users\%username%\Desktop\%_JOB%PDFlist.txt"
if %_FOLDERS%! == Y! (
  dir *.pDF /s /b /A-D-H >> "C:\Users\%username%\Desktop\%_JOB%PDFlist.txt"
) ELSE (
  dir *.pdf /b /A-D-H >> "C:\Users\%username%\Desktop\%_JOB%PDFlist.txt"
)
echo =============================== END LIST =============================== >> "C:\Users\%username%\Desktop\%_JOB%PDFlist.txt"
cls
echo.&echo List Generated!
echo.&echo.&ECHO.Press ANY key to EXIT and view your file
PAUSE>NUL
start notepad "C:\Users\%username%\Desktop\%_JOB%PDFlist.txt"
EXIT

1 ответ1

0

Если вы не вернетесь в подпапки, тогда достаточно простого переключателя формата (/b). Однако, если вы выполняете рекурсию с тем же переключателем, вы получаете весь путь.

С включенными расширениями команд вы можете использовать следующее, чтобы отфильтровать только имена файлов:

for /f "delims=" %%F in ('dir *.pdf /s /b /A-D-H') do @echo %%~nxF

Смотрите help for для получения дополнительной информации, но то , что выше делает, является взятием вывод dir … команды и для каждого элемента затем распечатать только имя и расширение (эффективно сбросив диск и путь).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .