Board logo

标题: [文本处理] [已解决]批处理命令for语句提取标准输出的,command使用了空格路径为何出错? [打印本页]

作者: muink    时间: 2013-12-21 19:39     标题: [已解决]批处理命令for语句提取标准输出的,command使用了空格路径为何出错?

本帖最后由 muink 于 2013-12-21 21:37 编辑
  1.         for /f %%f in ('"%~dp0bin\sed" -n "$=" list.txt') do (
  2.                 echo 文件有%%f行
  3.                 set /a line=%line%*2
  4.                 if /i "!line!" gtr "%%f" (
  5.                         echo 无效选择,请重新输入。..
  6.                 )
复制代码
给%~dp0bin\sed加引号是为了能在含空格路径运行的,谁知加了引号之后连不带空格的路径都无法运行了,提示:
'C:\Users\用户名\Desktop\bat\bin\sed" -n "$' 不是内部或外部命令,也不是可运行的程序或批处理文件。

不知道为何for语句屏蔽了代码两边的引号,导致命令无法正确识别,而前面的这段程序就可以正常执行
for /f %%i in ('echo %line%^|"%~dp0bin\sed" "s/[0-9]*//"')
有什么解决办法么?代码就卡在这了,而且后续还有两三段sed的命令,都是同样的问题
作者: apang    时间: 2013-12-21 20:15

本帖最后由 apang 于 2013-12-21 21:01 编辑
  1. @echo off
  2. path=%path%;"%~dp0bin"
  3. for /f "delims=" %%a in ('sed -n "$=" list.txt') do echo,%%a
  4. pause
复制代码
这样应该也可以:
  1. @echo off
  2. for /f "delims=" %%a in ('""%~dp0bin\sed" -n "$^=" list.txt"') do echo,%%a
  3. pause
复制代码

作者: muink    时间: 2013-12-21 21:23

哦,也就是说把“=”也识别为一段命令了




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2