我正在尝试编写一个快速批处理程序,用于复制文件夹中文件的名称或该文件夹及其子文件夹的名称。我遇到的问题是:我不想要目录名称。
这是我的代码:
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 …
,然后为每个项目打印出名称和扩展名(有效地删除驱动器和路径)。