标题: [文本处理] 批处理for命令中的管道符号无法识别? [打印本页]
作者: kfc427 时间: 2009-5-13 10:37 标题: 批处理for命令中的管道符号无法识别?
首先需要声明一下,小弟是最近两天开始弄批处理的。所以说绝对是个菜鸟,所以希望各位江湖豪杰能口下留情。谢谢啊!
先来看看我写的batch file
- @echo on
- REM discriminate query version or build No. by the first parameter
- if "%1" EQU "" goto :endofargs
-
- if /i "%1" EQU "-version" goto :versionQuery
- if /i "%1" EQU "-buildNo" goto :buildnoQuery
-
- REM *** version query section ***
- :versionQuery
- for /f "tokens=6 delims= " %%i in ('%OMNIHOME%\probes\win32\%2 -version|find /I "probe"|find /V "API"') do echo %%~i
-
- REM *** build number query section ***
- :buildnoQuery
- for /f "tokens=3 delims= " %%i in ('%OMNIHOME%\probes\win32\%2 -version | find "Release ID:"') do echo %%~i
-
- :endofargs
- echo "Bad parameter, please input parameters correctly..."
- echo "1. ProbeInfo.bat -version PROBE_NAME"
- echo "2. ProbeInfo.bat -buildNo PROBE_NAME"
复制代码
在命令行执行 batchfile.bat -version abc.exe之后,其中有一个这样的提示信息
| was unexpected at this time.
管道符号此时不是所期望的?? 这是什么意思?不识别管道符 ??
不明白。希望高手们能根据我的代码帮小弟分析一下问题。跪谢!!
[ 本帖最后由 kfc427 于 2009-5-13 15:32 编辑 ]
作者: Batcher 时间: 2009-5-13 10:40
for语句中的管道符为何要用尖号^进行转义?
http://bbs.bathome.net/viewthread.php?tid=1290&page=2#pid6306
本版规则
1、求代码、寻求代码解释、探讨代码得失的帖子均可发在本版块,其余话题禁止在本版讨论;
2、求助时,务必在顶楼一次性把问题交代清楚;若文字难以表述,请配图说明,或是上传附件;但是,一切操作应从节约论坛资源的角度出发,能文字说明清楚的就无需再发图片,小图能说明问题的尽量不截全图,在不影响效果的前提下尽量压缩图片及附件;
3、所发代码若不止一行,请务必用code标记把代码部分首尾括起来,以便他人复制;
Q: 如何用code把代码扩起来?
A: http://bbs.bathome.net/thread-404-1-1.html
作者: kfc427 时间: 2009-5-13 10:44
谢谢高人!!
原来如此啊!
作者: kfc427 时间: 2009-5-13 10:48
'C:\Program' is not recognized as an internal or external command,operable program or batch file.
现在又有这个提示信息,%OMNIHOME%其中包含“C:\Program Files\test\...”
肯定是把路径里的空格当做命令行里的分隔符了
这个问题如何解决?
作者: SunTB 时间: 2009-5-13 10:58
原帖由 kfc427 于 2009-5-13 10:48 发表
'C:\Program' is not recognized as an internal or external command,operable program or batch file.
现在又有这个提示信息,%OMNIHOME%其中包含“C:\Program Files\test\...”
肯定是把路径里的空格当做命令 ...
"%OMNIHOME%"
作者: kfc427 时间: 2009-5-13 11:04
原帖由 SunTB 于 2009-5-13 10:58 发表
"%OMNIHOME%"
for /f "tokens=6 delims= " %%i in ('"%OMNIHOME%"\probes\win32\%2 -version ^|find /I "probe" ^| find /V "API"') do echo %%~i
都已经改成这样了,可是为什么还是
'C:\Program' is not recognized as an internal or external command,operable program or batch file.
这个提示呢?
不解
作者: SunTB 时间: 2009-5-13 11:05
"%OMNIHOME%\probes\win32\%2"
当路径中含空格时 在整个路径的前后各加上一个半角的双引号
[ 本帖最后由 SunTB 于 2009-5-13 11:09 编辑 ]
作者: 随风 时间: 2009-5-13 12:54
楼主什么回帖都看得见,为何独独看不见2楼回帖中的这一句呢?难道真是事不关己?
作者: kfc427 时间: 2009-5-13 15:43
原帖由 随风 于 2009-5-13 12:54 发表
楼主什么回帖都看得见,为何独独看不见2楼回帖中的这一句呢?难道真是事不关己?
不好意思,我光顾着着急解决问题了。忽略这个问题了
现在我已经加上了
呵呵
作者: kfc427 时间: 2009-5-13 15:47
for /F "usebackq tokens=6" %%i IN (`"%OMNIHOME%\probes\win32\%2 -version" ^|find /I "probe" ^| find /V "API"`) DO echo %%i
都改成这样了,可是为什么还是
'C:\Program' is not recognized as an internal or external command,operable program or batch file.
这个提示呢?
愁死我了
作者: Batcher 时间: 2009-5-13 16:02 标题: 回复 10楼 的帖子
这样呢?- for /f "tokens=6" %%i in ('"%OMNIHOME%\probes\win32\%2" -version^|find /i "probe"^|find /v "API"') do echo %%i
复制代码
作者: kfc427 时间: 2009-5-13 16:12
- @echo on
- REM discriminate query version or build No. by the first parameter
- if "%1" EQU "" goto :endofargs
-
- if /i "%1" EQU "-version" goto :versionQuery
- if /i "%1" EQU "-buildNo" goto :buildnoQuery
-
- REM *** version query section ***
- :versionQuery
- for /F "tokens=6" %%i IN ('"%OMNIHOME%\probes\win32\%2" -version ^|find /I "probe" ^| find /V "API"') DO echo %%i
-
- REM *** build number query section ***
- :buildnoQuery
- for /F "usebackq tokens=3" %%i IN (`"%OMNIHOME%\probes\win32\%2 -version" ^| find "Release ID:"`) DO echo %%i
- :endofargs
- echo "Bad parameter, please input parameters correctly..."
- echo "1. ProbeInfo.bat -version PROBE_NAME"
- echo "2. ProbeInfo.bat -buildNo PROBE_NAME"
复制代码
改成这样以后运行,结果还是
'C:\Program' is not recognized as an internal or external command,operable program or batch file.
作者: Batcher 时间: 2009-5-13 16:45 标题: 回复 12楼 的帖子
看看执行过程,想想哪里出错了。- if "%1" EQU "" (
- goto :endofargs
- ) else if /i "%1" EQU "-version" (
- goto :versionQuery
- ) else if /i "%1" EQU "-buildNo" (
- goto :buildnoQuery
- ) else (
- goto :endofargs
- )
- pause
- goto :eof
- :versionQuery
- for /f "tokens=6" %%i in ('"%OMNIHOME%\probes\win32\%2" -version^|find /i "probe"^|find /v "API"') do (
- echo/%%i
- )
- pause
- goto :eof
- :buildnoQuery
- for /f "tokens=3" %%i in ('"%OMNIHOME%\probes\win32\%2" -version"^|find "Release ID:"') do (
- echo/%%i
- )
- pause
- goto :eof
- :endofargs
- echo "Bad parameter, please input parameters correctly..."
- echo "1. ProbeInfo.bat -version PROBE_NAME"
- echo "2. ProbeInfo.bat -buildNo PROBE_NAME"
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |