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

[文本处理] [已解决]批处理命令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的命令,都是同样的问题
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

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

TOP

本帖最后由 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
复制代码
1

评分人数

    • muink: 受教了!技术 + 1

TOP

返回列表