批处理文件,dir | for 循环内的 findstr

批处理文件,dir | for 循环内的 findstr

首先,我承认我对批处理文件和编程语言完全不了解。我正在尝试编写一个批处理文件,允许用户输入部分的filename,它会搜索几十个子目录,找到并打开所有名称包含用户输入的 pdf 文件。我预计它会找到 2 到 8 个不同的 pdf 文件。

我可以使用以下命令返回文件路径,

set /p Number="Enter the Job-Shaft Number "

echo Searching folders

dir /b /s "*.pdf" | findstr /i "%Number%"

但是当我尝试将它包装在 for 循环中以便可以实际用它做一些事情时,我遇到了问题:

for %%G in ('dir /b /s "*.pdf" | findstr /i "%Number%"') do echo %%G

它似乎不喜欢这个管道。有什么建议吗?

PS 我希望它能真正打开 pdf 文件,而不仅仅是回显,但我还没有做到这一点。如果我现在无法让它工作,那么让事情变得更复杂就没有任何意义了。

答案1

要运行命令,您需要

  1. 插入在/ffor 和 also 后面
  2. 插入"delims="不是对输出进行标记
    (默认情况下,"tokens=1 and delims= "它会在空格后被截断)
  3. 转义管道符号^|以将其传递给在后台执行的辅助 cmd.exe。

for /f "delims=" %%G in ('dir /b /s "*.pdf" ^| findstr /i "%Number%"') do echo %%G

如果%Number%确实代表一个数字,则无需使用/i开关

相关内容