Windows 逃逸>;在嵌入式命令中不工作

Windows 逃逸>;在嵌入式命令中不工作,windows,batch-file,Windows,Batch File,我正在Windows 2003上运行此操作(没有其他选项) 以下面的代码为例: @echo off for /F "tokens=*" %%f in ('Dir /s /b E:\file 2^>nul') do ( @echo %%f ) 这是递归搜索E:所有名为file的文件。然后它打印出匹配项,类似于E:\path\to\file 因此,Dir自然地打印未找到的文件在搜索之后,这将打印到stderr 因此,我尝试使用以下命令重定向stderr: 嵌入Dir命令时,^将转义。

我正在Windows 2003上运行此操作(没有其他选项)

以下面的代码为例:

@echo off
for /F "tokens=*" %%f in ('Dir /s /b E:\file 2^>nul') do (
    @echo %%f
)
这是递归搜索
E:
所有名为
file
的文件。然后它打印出匹配项,类似于
E:\path\to\file

因此,
Dir
自然地打印
未找到的文件
在搜索之后,这将打印到
stderr

因此,我尝试使用以下命令重定向
stderr

嵌入
Dir
命令时,
^
将转义
。然而,我只是得到了错误(尽管这是许多人的常见解决方案):

我在
Windows7
上对此进行了测试,效果很好,因此我尝试将
包含在语音标记中,该标记在
NT
中使用,以前(据我所知)用于转义字符

2">"nul
这一行为是相同的,仍然输出到
stderr


有什么想法吗?

您的命令看起来像是在递归列出目录
E:\file
,而不是在
E:
中的任何地方查找没有扩展名
file
的文件。如果您想在
E:
中递归搜索任何名为
file
的无扩展文件,那么
Where
命令可能会取代您的
Dir
命令:
@for/F“Delims=“%%a in('Where/re:file')do@Echo%%a
我同意@Mofi的两条评论。感谢@Mofi的确认。不过,你把它拿出来,它就执行了,把它放进去,它就不执行了。我在7号窗口上运行了同样的程序,它也可以运行。@Mofi你是对的。我被从我的OSX机器RDP到Win2003的盒子里。当关闭echo时(一开始我是个傻瓜,因为我没有这么做),我看到了一个奇怪的字符。使用角色地图在那里放了一顶真正的帽子,奖励我去。。。
> was unexpected at this time
2">"nul