使用FORFILES将文件传递给程序

时间:2014-10-30 03:32:55

标签: windows batch-file pdf

我试图在Windows 7中编写一个2行.bat文件,以递归方式搜索pdfs的根文件夹和子文件夹,然后按照我文件中的FORFILES命令打印它们:

set fxread="C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe"
forfiles /s /m *.pdf /c "%fxread% /p @FILE"

给出以下错误:

ERROR: Invalid argument/option - 'Files'.

但是,如果我只使用FORFILES来回显文件名,我会按预期获得pdf文件列表;即此代码:

forfiles /s /m *.pdf /c "cmd /c echo @FILE"

生成一个pdf文件列表,每行一个并用引号括起来。

任何人都知道为什么我无法将这些文件传递给PDF查看器进行打印?请注意,此命令会按预期打印pdf文件:

%fxread% /p "FILE_NAME.pdf"

1 个答案:

答案 0 :(得分:0)

当您在引号中包装字符串以保留空格时,引号将成为字符串的一部分。将它与forfiles所需的引号相结合,然后您传递命令forfiles /s /m *.pdf /c ""C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe" /p @FILE"

在fxread之前放置第一个引号以避免在字符串中包含引号。此外,需要转义空格,括号和引号的十六进制等值。

set "fxread=^0x22C:\Program^ Files^ ^(x86^)\Foxit^ Software\Foxit^ Reader\Foxit^ Reader.exe^0x22^ /p"
forfiles /s /m *.pdf /c "cmd /c %fxread% @path"