标题: [文本处理] [已解决]批处理命令for语句提取标准输出的,command使用了空格路径为何出错? [打印本页]
作者: muink 时间: 2013-12-21 19:39 标题: [已解决]批处理命令for语句提取标准输出的,command使用了空格路径为何出错?
本帖最后由 muink 于 2013-12-21 21:37 编辑
- for /f %%f in ('"%~dp0bin\sed" -n "$=" list.txt') do (
- echo 文件有%%f行
- set /a line=%line%*2
- if /i "!line!" gtr "%%f" (
- echo 无效选择,请重新输入。..
- )
复制代码
给%~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 编辑
- @echo off
- path=%path%;"%~dp0bin"
- for /f "delims=" %%a in ('sed -n "$=" list.txt') do echo,%%a
- pause
复制代码
这样应该也可以:- @echo off
- for /f "delims=" %%a in ('""%~dp0bin\sed" -n "$^=" list.txt"') do echo,%%a
- pause
复制代码
作者: muink 时间: 2013-12-21 21:23
哦,也就是说把“=”也识别为一段命令了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |