Batch file 批次cmd赢得';不接受重定向符号

Batch file 批次cmd赢得';不接受重定向符号,batch-file,cmd,escaping,Batch File,Cmd,Escaping,我有一个批处理脚本,它运行一个命令,该命令应将结果转发到一个文件: start cmd /k "tasklist | find ^"Notepad^" ^> ^"C:\Users\Improvise\Desktop\notepadDeets.txt^"" 以下内容在cmd提示符中起作用: tasklist | find "Notepad" > "C:\Users\Improvise\Deskt

我有一个批处理脚本,它运行一个命令,该命令应将结果转发到一个文件:

start cmd /k "tasklist | find ^"Notepad^" ^> ^"C:\Users\Improvise\Desktop\notepadDeets.txt^""
以下内容在cmd提示符中起作用:

tasklist | find "Notepad" > "C:\Users\Improvise\Desktop\notepadDeets.txt"
在此脚本中,命令的工作方式如下:

start cmd /k "tasklist | find ^"Notepad^""
但是当我尝试添加
>“C:\Users\Improvise\Desktop\notepadDeets.txt”

使用
^>
时,错误消息为:

Access denied - >
FIND: Parameter format not correct
Access denied - >
FIND: Parameter format not correct
使用
时,错误消息为:

Access denied - >
FIND: Parameter format not correct
Access denied - >
FIND: Parameter format not correct

我没有正确地转义这个字符吗?为什么它在批处理脚本中不起作用,我如何才能使它起作用?

不需要在外部引号中转义特殊字符。从
cmd/?

[…]否则,旧的行为是查看第一个字符是否是引号字符,如果是,则去掉前导字符并删除命令行上的最后一个引号字符[…]

以下工作将起作用:

start cmd /k "tasklist | find /I "Notepad" >"C:\Users\Improvise\Desktop\notepadDeets.txt""
或者,不带所有引号,并转义特殊字符:

start cmd /k tasklist ^| find /I "Notepad" ^>"C:\Users\Improvise\Desktop\notepadDeets.txt"

[编辑]下面解释了原始帖子中引用的错误

使用
^>
时,错误消息为:

Access denied - >
FIND: Parameter format not correct
Access denied - >
FIND: Parameter format not correct
使用
^>
将未扫描的
传递给
find
命令,该命令将其解释为要搜索的文件名。这会失败,因为
是非法文件名,并且由于某种原因会报告为“拒绝访问”错误。可以在命令提示下复制相同错误的变体:

C:\etc>find "notepad" ^>
Access denied - >

C:\etc>find "notepad" ^> nul
Access denied - >
File not found - NUL

C:\etc>find "notepad" ^>nul
File not found - >NUL
使用
时,错误消息为:

Access denied - >
FIND: Parameter format not correct
Access denied - >
FIND: Parameter format not correct
使用未切换的
时,重定向应用于顶层的
start
命令,因此执行的是
cmd/k“tasklist | find^“Notepad”
,它最终运行
find^“Notepad
,导致“参数格式不正确”错误:


为什么在.bat文件脚本中使用
start
。我以为这就是执行命令的语法。在同一个bat文件中,我有另一个
start cmd/k“…”
,可以正常工作。无需删除内部引号或重定向。只需像平常一样使用引号,并继续用引号括住整个命令。我认为使用
START
CMD/K
没有任何意义。为什么你想在那里留下一个打开的窗口?你的观点是什么?我没告诉你不要用引号。我说过要像平常一样使用引号。我不知道你为什么选择逃避他们和重定向符号。