假设在我的Windows机器上有一个名为root
的文件夹。在这个文件夹中,我有大约10个名为Mathematics
,Physics
,Chemistry
等的子文件夹,在每个子文件夹中,我有大约30个子文件夹,如John-doe
,{{1 }},Sara-smith
等,并且在每个子子文件夹中我还有大约6-7个具有不同扩展名的文件,例如Nicola-sheperd
,.png
.jpg
,{{1} },.pdf
,.tex
,.idx
等
要列出所有文件夹中的所有.txt
个文件,请使用以下批处理文件:
.aux
但它有一个问题:
它显示了pdf
这样的完整路径,而出于某种原因我希望它是@echo off
for /r %%F in (*.pdf) do echo %%~dpF%%~nxF >>dir.txt
如何将E:\root\mathematics\john-doe\paper.pdf
替换为E:/root/mathematics/john-doe/paper.pdf
?
答案 0 :(得分:1)
要将\
替换为/
,请使用string replacement。如果您在for
循环中执行此操作,则还需要延迟扩展。从控制台执行setlocal /?
以获取更多信息。对于它的价值,%%~dpF%%~nxF
是说%%~fF
的难点。有关详细信息,请参阅控制台中for /?
的最后几页。
@echo off
setlocal enabledelayedexpansion
>dir.txt (
for /r "E:\root" %%I in (*.pdf) do (
set "file=%%~fI"
echo !file:\=/!
)
)