2012-08-01 41 views
3

请您告知如何修正以下命令,该命令将删除以下批次:执行与在用管道循环引号命令来查找

rem @echo off 
for /f "tokens=2*" %%i in ('"c:\Program Files\TortoiseSVN\bin\svn.exe" status --no-ignore ^| find "?"') do echo %%i 

变种SVN受控的项不带路径的工作原理:

rem @echo off 
for /f "tokens=2*" %%i in ('svn.exe status --no-ignore ^| find "?"') do echo %%i 

但我需要用svn.exe传递整个路径。在这种情况下,输出C:\程序是不是一个有效的程序

回答

2

尝试这样的:

for /f "usebackq tokens=2*" %%i in (`"c:\Program Files\TortoiseSVN\bin\svn.exe" status --no-ignore ^| find "?"`) do echo %%i 
+0

感谢。但它仍然输出C:\ Program不是一个有效的程序 – user1266063 2012-08-01 08:30:01

+0

对不起,它输出:Files \ TortoiseSVN \ bin \ svn.exe“ – user1266063 2012-08-01 08:31:16

+0

以及如何:/ f”usebackq tokens = 2 *“%%我在(''' “c:\ Program Files \ TortoiseSVN \ bin \ svn.exe”'status --no-ignore^| find“?”')do echo %% i(使用'toghether with')。 YOu也可以保存到可执行文件的路径到一个变量,并将其替换为for循环 – npocmaka 2012-08-01 08:31:57

0

当我遇到了这个问题,我尝试使用“有usebackq”在Windows命令提示参考文献[1]:

指定执行反引号字符串作为命令,单引号字符串作为文字字符串命令。另外,允许Set中的文件名用引号引起来。

我发现这仍然给出了关于C:\ Program不能执行的错误。

然后我记住,Windows cmd.exe有非常奇怪的引用规则,如果执行字符串中的第一个和最后一个字符是引号,它们将被剥离[2]。

所以,我想这一点,它的工作对我来说:

for /F usebackq %%d in (`""path to command" arg arg "quoted arg""`) do @echo %%d 

[1] http://technet.microsoft.com/en-us/library/cc754900.aspx

[2] http://technet.microsoft.com/en-us/library/cc771320.aspx

+0

这对我不起作用。你能否包括一个真实的例子,以便我们检查? – 2018-02-21 08:35:34