假设在我的Windows机器上有一个名为root
的文件夹。在此文件夹中,我有大约500个名为John-doe
,Sara-smith
,Nicola-sheperd
等的子文件夹。在每个文件夹中,我有大约6-7个具有不同扩展名的文件,例如.png
, .jpg
.pdf
,.tex
,.idx
,.txt
,.aux
等。另请注意,可能有两个或更多{{1} }每个文件夹中的文件,但仅其中一个文件夹与其文件夹名称相同
现在,我想从这500个文件夹中导出与其文件夹同名的pdf
文件名,并将其导入pdf
文件夹中的mypdfnames.tex
文件,如下所示:
root
我该怎么做?
我是批处理文件的新手,所以请提供完整的代码。
答案 0 :(得分:1)
这是一个可以成为您自己的解决方案的骨架的脚本:
@ECHO OFF >NUL
@SETLOCAL enableextensions disabledelayedexpansion
rem full path to "root" directory
set "myroot=D:\bat\StackOverflow\files\root"
set "myextn=txt"
rem loop through "*.%myextn%" files (recurse subfolders)
For /R "%myroot%" %%G in (*.txt) do (
rem find out last item in path
for /F "tokens=*" %%H in ( "%%~dpG.") do (
rem is filename==foldername.txt?
if /i "%%~nxG"=="%%~nxH.%myextn%" (
rem redirect next echo: >>"%myroot%\mypdfnames.tex"
echo(\include{%%~nxH/%%~nxG}
) else (
rem sample only
echo( omitted %%~nxG # %%~nxH.%myextn%
)
)
)
@ENDLOCAL
goto :eof
由代码中的rem
条评论解释。更改myroot
(路径)和myextn
(扩展名)变量,并将更多记录添加到"%myroot%\mypdfnames.tex"
文件中。
资源:
FOR
- Loop commands ~
- Parameter modification >>
- Redirection 输出:
=>dir /b /s D:\bat\StackOverflow\files\root\*.txt
D:\bat\StackOverflow\files\root\Ian-ionescu\Ian-ionescuY.txt
D:\bat\StackOverflow\files\root\Ian-ionescu\Nicola-sheperd.txt
D:\bat\StackOverflow\files\root\John-doe\John-doe.txt
D:\bat\StackOverflow\files\root\John-doe\John-doeA.txt
D:\bat\StackOverflow\files\root\Nicola-sheperd\Nicola-sheperdX.txt
D:\bat\StackOverflow\files\root\Sara-smith\Sara-smith.txt
D:\bat\StackOverflow\files\root\Sara-smith\Sara-smithZ.txt
=>D:\bat\StackOverflow\28551216.bat
omitted Ian-ionescuY.txt # Ian-ionescu.txt
omitted Nicola-sheperd.txt # Ian-ionescu.txt
\include{John-doe/John-doe.txt}
omitted John-doeA.txt # John-doe.txt
omitted Nicola-sheperdX.txt # Nicola-sheperd.txt
\include{Sara-smith/Sara-smith.txt}
omitted Sara-smithZ.txt # Sara-smith.txt