首先,我承认我对批处理文件和编程语言完全不了解。我正在尝试编写一个批处理文件,允许用户输入部分的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
要运行命令,您需要
- 插入在
/f
for 和 also 后面 - 插入
"delims="
到不是对输出进行标记
(默认情况下,"tokens=1 and delims= "
它会在空格后被截断) - 转义管道符号
^|
以将其传递给在后台执行的辅助 cmd.exe。
for /f "delims=" %%G in ('dir /b /s "*.pdf" ^| findstr /i "%Number%"') do echo %%G
如果%Number%
确实代表一个数字,则无需使用/i
开关