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

[文本处理] [已解决] 批处理中的stderr到stdout的重定向如何实现?

通过了解后知道在Linux上,把stderr重定向到stdout可以使用下面类似的语句:
  1. ./net_confirm -version 2>&1 |grep version
复制代码
那请问在bat中实现的话是怎样的?
  1. net_confirm.exe -version 2>&1 ^| find "version"
复制代码
这样我试过,不行。
希望高手能不吝赐教。小弟先谢过

[ 本帖最后由 kfc427 于 2009-5-15 12:55 编辑 ]
1

评分人数

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

不过我在如下批处理语句中实现了重定向到文件里
  1. net_confirm.exe -version > tmp.txt 2>&1
复制代码
至于管道重定向我是不知道如何实现...

TOP

不知道 net_confirm.exe 是什么命令。

但可以试下,把 ^ 这个符号去掉。

TOP

原帖由 cutebe 于 2009-5-14 10:21 发表
不知道 net_confirm.exe 是什么命令。

但可以试下,把 ^ 这个符号去掉。

net_confirm.exe是一个别人开发出来的产品,能实现对网络某节点的确认。而
net_confirm.exe -version
可以得到这个产品相关的版本号,版权声明之类的信息

TOP

原帖由 cutebe 于 2009-5-14 10:21 发表
不知道 net_confirm.exe 是什么命令。

但可以试下,把 ^ 这个符号去掉。

我这语句是要放到for语句里嵌套使用的
我认为这时的管道符应该是 "^|" 这个吧?

TOP

不如共享一下,大家帮你测试。

TOP

没有net_confirm.exe不好做测试,arp是没有问题的。

C:\Test>arp 2>&1|find "IP-to-Physical"
Displays and modifies the IP-to-Physical address translation tables used by
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

for /f "delims=" %%a in ('net_confirm.exe -version 2^>^&1 ^| find "version"') do @echo %%a

还是

for %%a in (abc) do net_confirm.exe -version 2>&1 ^| find "version" ?

后者^要去掉

[ 本帖最后由 sylovanas 于 2009-5-14 15:03 编辑 ]

TOP

只给半截代码,又不想提供涉及到的工具,很难帮你。

猜一个罢:
  1. for /f "delims=" %%i in ('"net_confirm.exe -version 2>&1|find "version""') do echo %%i
  2. pause
复制代码

TOP

回复 9楼 的帖子

你猜的不对,特殊字符需要转义,见8楼。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 cutebe 于 2009-5-14 16:51 发表
只给半截代码,又不想提供涉及到的工具,很难帮你。

猜一个罢:for /f "delims=" %%i in ('"net_confirm.exe -version 2>&1|find "version""') do echo %%i
pause

不是不想把那东西贴出来,关键是有好多东西,动态链接库就用到20来个!

TOP

没有实物真的是很难想。

放在哪个地方,提供一个下载地址罢。
批处理之家论坛官方 QQ 群 :【当前人数/人数上限】【2009-07-08】
群①:43011867(181/200);群②:(暂缺数据);群③:66165582(120/200)。

TOP

回复 11楼 的帖子

那就把你的完整代码贴出来看看吧
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

问题解决喽!
一会把代码贴上来给大家看看
以答谢大家对我的帮助

TOP

Netcool/OMNIbus MT Ping Probe - Version 7.2.1
(C) Copyright IBM Corp. 1994, 2007

5/16/2009 10:58:09 PM: Debug: D-UNK-105-000: Netcool/OMNIbus Probe API Library Version 7.2.1
5/16/2009 10:58:09 PM: Debug: D-UNK-105-000: API Release ID: 5.11.18
5/16/2009 10:58:09 PM: Debug: D-ETC-105-001: Added property SSLServerCommonName
5/16/2009 10:58:09 PM: Debug: D-ETC-105-001: Added property ServerBackup
Netcool/OMNIbus Ping probe - Version 7.2.1
(C) Copyright IBM Corp. 1994, 2007

Netcool/OMNIbus Probe API Library Version 7.2.1
Release ID: 4.0.3261
API Release ID: 5.11.18
  1. @echo off
  2. REM ****************************************
  3. REM ** File Name : ProbeInfo.bat          **
  4. REM ****************************************
  5. REM *** parameters check, just in the case of there are two parameters to process next ***
  6. if "%1" EQU "" (
  7.         goto :endofargs
  8. ) else if "%2" EQU "" (
  9.         goto :endofargs
  10. )
  11. REM *** set the path probes located and make the path to short format ***
  12. set ProbePath=%OMNIHOME%\probes\win32               *OMNIHOME = C:\Program Files\Omnibus\Teac*
  13. for %%x IN ("%ProbePath%") DO set ProbePath=%%~sx   *将路径去空格*
  14. REM *** task specified ***
  15. if /i "%1" EQU "-version" (
  16.          goto :versionQuery
  17. ) else if /i "%1" EQU "-buildNo" (
  18.          goto :buildnoQuery
  19. ) else (
  20.          goto :endofargs
  21. )
  22. REM *** version query section ***
  23. :versionQuery
  24. for /F "delims=- tokens=2" %%i IN ('%ProbePath%\%2 -version 2^>^&1 ^| find /V "Debug" ^| find /I "probe" ^| find /V "API" ^| find /V " MT "') DO (
  25. for /F "tokens=2" %%j IN ("%%i") DO echo %%j
  26. )
  27. goto :exit
  28. REM *** build number query section ***
  29. :buildnoQuery
  30. for /F "tokens=3" %%i IN ('%ProbePath%\%2 -version 2^>^&1 ^| find /V "Debug" ^| find "Release ID" ^| find /V "API"') DO echo %%i
  31. goto :exit
  32. :endofargs
  33. echo "Bad parameter, please input parameters correctly..."
  34. echo "1. ProbeInfo.bat -version PROBE_NAME"
  35. echo "2. ProbeInfo.bat -buildNo PROBE_NAME"
  36. :exit
复制代码
此脚本是用来获取回显(类似于代码上面的东西)中的特定内容的,而这个回显的输出是标准错误输出;所以需要用到输出的重定向。至于执行文件的路径中有空格的问题,加双引号的方法试过了(加什么位置都试过),可都是以失败告终。最终我采纳了另一方法,将路径短化、去空格化。
最终就解决了。

TOP

返回列表