Batch file 如果用户输入有子目录的目录,则搜索根目录中的所有子目录

Batch file 如果用户输入有子目录的目录,则搜索根目录中的所有子目录,batch-file,pdftk,Batch File,Pdftk,这是一个已经回答的问题的后续行动 如果用户输入“c:\folder”,而该目录中恰好有多个文件夹,如何使其搜索请求根目录中的所有子目录 下面的示例代码当前搜索一个文件夹并显示结果,即使有多个文件夹 @echo off set total=0 set /p direct=What directory do you want to count? for %%a in (%direct%\*.pdf) do ( title %%a for /f "tokens=2 delims=: "

这是一个已经回答的问题的后续行动

如果用户输入“c:\folder”,而该目录中恰好有多个文件夹,如何使其搜索请求根目录中的所有子目录

下面的示例代码当前搜索一个文件夹并显示结果,即使有多个文件夹

@echo off
set total=0
set /p direct=What directory do you want to count? 
for %%a in (%direct%\*.pdf) do (
   title %%a
   for /f "tokens=2 delims=: " %%b in ('pdftk "%%a" dump_data ^| find "NumberOfPages"') do (
      set /a total+=%%b
   )
)
echo TOTAL PAGE COUNT IS %total%  
pause
试着替换

for %%a in (%direct%\*.pdf) do (
    title %%a
    for /f "tokens=2 delims=: " %%b in ('pdftk "%%a" dump_data ^| find "NumberOfPages"') do (
         set /a total+=%%b
    )
)


title%%a
并不重要,因为它只显示最后一个。

所以我自己解决了这个问题(有点),请参见下面的代码。将文件复制到临时目录,然后从那里开始计数。这对我来说是一个简单得多的解决方案

set total=0
set /p direct=What directory do you want to count?

del "C:\Program Files\PDF COUNTER\TEMP\*.pdf"

pushd %direct%
   for /r %%a in (*.pdf) do (
       copy "%%a" "C:\Program Files\PDF COUNTER\TEMP\%%~nxa"
   )
popd

for %%a in ("C:\Program Files\PDF COUNTER\TEMP\*.pdf") do (
   title %%a
   for /f "tokens=2 delims=: " %%b in ('pdftk "%%a" dump_data ^| find "NumberOfPages"') do (
      set /a total+=%%b
   )
)
echo TOTAL PAGE COUNT IS %total%  
pause

您是否查看了/r?是的,尽管我选择的根目录中有多个文件夹都包含PDF,但我的页面计数仍然为0。这真的让我很难受。这会在您输入目录后立即关闭脚本。。。即使稍作停顿,我也看不出问题出在哪里。我是不是遗漏了什么?这次没有错误,但还是得到了0。我是个白痴。。。我相信这会奏效的。我忽略了一些事情。我将很快进行测试并报告。正在获取此错误。错误:无效的参数/选项-“delims=:”。键入“FORFILES/?”了解用法。
set total=0
set /p direct=What directory do you want to count?

del "C:\Program Files\PDF COUNTER\TEMP\*.pdf"

pushd %direct%
   for /r %%a in (*.pdf) do (
       copy "%%a" "C:\Program Files\PDF COUNTER\TEMP\%%~nxa"
   )
popd

for %%a in ("C:\Program Files\PDF COUNTER\TEMP\*.pdf") do (
   title %%a
   for /f "tokens=2 delims=: " %%b in ('pdftk "%%a" dump_data ^| find "NumberOfPages"') do (
      set /a total+=%%b
   )
)
echo TOTAL PAGE COUNT IS %total%  
pause