如何从大约500个文件夹导出我的pdf文件名?

时间:2015-02-16 22:08:39

标签: batch-file export subdirectory

假设在我的Windows机器上有一个名为root的文件夹。在此文件夹中,我有大约500个名为John-doeSara-smithNicola-sheperd等的子文件夹。在每个文件夹中,我有大约6-7个具有不同扩展名的文件,例如.png.jpg .pdf.tex.idx.txt.aux等。另请注意,可能有两个或更多{{1} }每个文件夹中的文件,但其中一个文件夹与其文件夹名称相同 现在,我想从这500个文件夹中导出与其文件夹同名的pdf文件名,并将其导入pdf文件夹中的mypdfnames.tex文件,如下所示:

root

我该怎么做?
我是批处理文件的新手,所以请提供完整的代码。

1 个答案:

答案 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"文件中。

资源:

输出:

=>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