CMD中获取命令返回值
2020-06-02 本文已影响0人
Belmode
例如指令:
tasklist|find /i "mongod.exe"
返回的结果是:
C:\Users\Ruby>tasklist|find /i "mongod.exe"
mongod.exe 8364 Console 2 165,864 K
可以通过一起bat脚本读取值:
@echo off
for /f "tokens=2" %%i in ('tasklist^|find /i "mongod.exe"') do set val=%%i
echo %val%
pause
其中:
- 如果 tokens=1,那么结果为mongod.exe
- 如果 tokens=3, 那么结果为Console
- 如果 tokens=4,那么结果为2
- 如果 tokens=5,那么结果为165,864
- 如果 tokens=5,那么结果为K
也就是说,tokens读取的,是忽略空格的列的值!
注意:如果要在命令中使用管道符,需要添加 ^ 符号
一个完整的应用启停的例子:
@echo off
REM "如果是start那么按照后台启动的方式运行mongodb"
REM "如果是stop,那么关闭mongodb"
REM "如果是restart,那么重启""
REM "默认前台启动mongod"
if "%1"=="start" (
cmd /C start /b mongod -f "D:\Program Files\mongodb-win32-x86_64-2012plus-4.2.6\mongod.conf" &&echo mongodb.exe已启动
) ^
else if "%1"=="stop" (
taskkill -f -im mongod.exe
) ^
else if "%1"=="restart" (
taskkill -f -im mongod.exe > nul
cmd /C start /b mongod -f "D:\Program Files\mongodb-win32-x86_64-2012plus-4.2.6\mongod.conf" && echo 已重新启动mongodb.exe
) ^
else if "%1"=="status" (
for /f "tokens=2" %%i in ('tasklist^|find /i "mongod.exe"') do set mpid=%%i
tasklist|find /i "mongod.exe" > nul && echo mongodb.exe运行中, pid为%mpid% || echo mongodb.exe未运行
) ^
else (
tasklist|find /i "mongod.exe" > nul && echo mongodb.exe已启动,不必重复启动 || mongod -f "D:\Program Files\mongodb-win32-x86_64-2012plus-4.2.6\mongod.conf"
)