[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 【已解决】请教如何在 for 中使用含空格的路径

  1. for /f "delims=" %%i in ('"c:\test\a a\a.exe"^|"c:\test\b b\b.exe"') do (
  2. echo ok
  3. )
复制代码
出错提示:
'c:\test\a' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
  1. for /f "delims=" %%i in ('c":\test\a a\a.exe"^|"c:\test\b b\b.exe"') do (
  2. echo ok
  3. )
复制代码
输出 ok

问题:
为什么第一段执行出错,第二段代码执行成功 ?


  1. for /f "delims=" %%i in ('"c:\test\a a\a.exe"') do (
  2. echo ok
  3. )
复制代码
输出 ok

上面代码不变将文件a.exe删除后,再次运行。
出错提示:

'c:\test\a' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

问题:
出错提示为什么不是 ‘c:\test\a a\a.exe’不是内部或外部命令,也不是可运行的程序
或批处理文件 ?

[ 本帖最后由 xahstar 于 2010-7-10 22:26 编辑 ]

原帖由 sgaizxt001 于 2010-7-9 21:59 发表
你添加start看一下呢for /f "delims=" %%i in ('start "" "c:\test\a a\a.exe" ^| start "" "c:\test\b b\b.exe"') do (
echo ok
)


a.exe的输出不能通过管道传递b.exe 。
echo ok 无法执行。

TOP

原帖由 zqz0012005 于 2010-7-10 12:26 发表
与for无关,CMD解析命令行引号的机制造成的,应该是正常结果。

一和二运行的命令行分别是
C:\WINDOWS\system32\cmd.exe /c "c:\test\a a\a.exe"|"c:\test\a a\b.exe"
C:\WINDOWS\system32\cmd.exe /c "c:\test\ ...


谢谢,明白了些。
但还有两处不明。
1. C:\WINDOWS\system32\cmd.exe /c "c:\test\a a\a.exe"|"c:\test\b b\b.exe"
可以正确执行并输出啊?

2.在for中应当怎样写才能正确执行呢?

[ 本帖最后由 xahstar 于 2010-7-10 14:53 编辑 ]

TOP

原帖由 zqz0012005 于 2010-7-10 21:44 发表
8楼的说明被你无视了吗?

C:\WINDOWS\system32\cmd.exe /c "c:\test\a a\a.exe"|"c:\test\b b\b.exe"
你把它放在开始→运行里面执行,与在CMD里面执行是不一样的。
在CMD里面要想达到同样效果也很简单,在|前面 ...


对不起,当时没搞明白系统执行与cmd执行的关系。
现在懂了,多谢。

TOP

返回列表