Batch file |在这个时候是出人意料的

Batch file |在这个时候是出人意料的,batch-file,for-loop,Batch File,For Loop,我正在尝试使用dir和findstr查找文件,以便能够在名称中指定扩展名和模式 为此,我使用以下命令: for /f %%a in ('dir /b /s *.pm | findstr /i "MyPattern"') do (set "name=%%a") 这个问题已经在和中得到了回答 但是它们都不适用于我的情况。您需要退出管道(|),因为它会打破for循环,因为它总是以更高的优先级执行。按如下方式修改代码: for/f%%a in('dir/b/s*.pm^ findstr/i“MyPa

我正在尝试使用
dir
findstr
查找文件,以便能够在名称中指定扩展名和模式

为此,我使用以下命令:

for /f %%a in ('dir /b /s *.pm  | findstr /i "MyPattern"') do (set "name=%%a")
这个问题已经在和中得到了回答


但是它们都不适用于我的情况。

您需要退出管道(
|
),因为它会打破
for
循环,因为它总是以更高的优先级执行。按如下方式修改代码:

for/f%%a in('dir/b/s*.pm^ findstr/i“MyPattern”')do(设置“name=%%a”)

它应该会起作用。

你的链接问题(或他们的答案)都不能解决你的问题。您需要在('critical part')do…中为/f%%a转义一些特殊字符。那些字符是
|和,=)
(我希望我没有忘记一些):
对于/f%%a in('dir/b/s*.pm^ findstr/I“MyPattern”')做…
perfectly@Stephan副本