【问题标题】:If user inputs directory that has subdirectories search all subdirectories in root如果用户输入具有子目录的目录,则搜索根目录中的所有子目录
【发布时间】:2015-08-07 16:34:47
【问题描述】:

这是对已经回答的问题的跟进。

如果用户输入“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

【问题讨论】:

  • 你看过 /r 吗?
  • 是的,即使我选择的根目录中有多个文件夹都包含 PDF,我的页数仍然为 0。这真的难倒我。

标签: batch-file pdftk


【解决方案1】:

尝试替换

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

forfiles /p %direct% /c "cmd /c if @isdir == FALSE (for %%a in (@path\*.pdf) do (for /f "tokens=2 delims=: " %%b in ('pdftk "%%a" dump_data ^| find "NumberOfPages"') do (set /a total+=%%b)))"

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

【讨论】:

  • 这会在您输入目录后立即关闭脚本......即使暂停我也看不出问题所在。
  • 我错过了什么吗?
  • 这次没有错误,但计数仍然为 0。
  • 我是个白痴……我相信这会奏效。我忽略了一些东西。我会尽快测试并报告。
  • 现在出现此错误。错误:无效的参数/选项 - 'delims=:'。输入“FORFILES /?”供使用。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 2022-07-02
    • 1970-01-01
    • 2011-11-09
    相关资源
    最近更新 更多