将文件列表写入文本文件但不想要目录名称

将文件列表写入文本文件但不想要目录名称

我正在尝试编写一个快速批处理程序,用于复制文件夹中文件的名称或该文件夹及其子文件夹的名称。我遇到的问题是:我不想要目录名称。

这是我的代码:

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

如果您不递归到子文件夹,则裸格式开关 ( /b) 就足够了。但是,如果您使用相同的开关进行递归,则会获得完整路径。

启用命令扩展后,您可以使用以下命令仅过滤掉文件名:

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

有关详细信息,请参阅help for,但上述操作是获取命令的输出dir …,然后为每个项目打印出名称和扩展名(有效地删除驱动器和路径)。

相关内容