CMD命令与批处理

02-11

1.一条CMD命令执行结果或状态值存于变量:%errorlevel%

多数命令0表示正常,其获取与判断:

if "%errorlevel%" == "0" echo 执行成功!或 if errorlevel 0 echo 执行成功!

2. 符号:&&与||

&& 和 || 都是连续执行命令的连接命令,前一种是前面命令正常执行时执行其后的命令,后一种当然就是不正常时执行的啦。

CMD1&&CMD2||CMD3 :CMD1执行正常则执行CMD2,前面命令执行不正常则执行CMD3。

3. 回显与命令执行信输出

echo ON/OFF:CMD命令执行时,命令内容要不要回显,批处理时,通常ECHO OFF;

命令输出:命令后可指明信息输出位置,如文件,1是正常输出,2为错误信息。

1>nul 不显示正常输出

2>nul 不显示错误输出

4. CMD命令启动BAT:start

附:BAT批处理文件小例子,供试运行摸索学习(所涉及目录需先创建)。

rem——注释

Bat代码

@ECHO OFF

rem 设置host路径

SET HOST_HOME=C:WindowsSystem32driversetc

ECHO.

ECHO.

ECHO.

ECHO.

ECHO.

ECHO.

ECHO. =-=-=-=-=87、151和204环境切换=-=-=-=-=

echo 1、切换到87开发环境

echo 2、切换到151UAT环境

echo 3、切换到204打包环境

echo 0、退出

:Restart

ECHO.

set /p cho= 请输入你的选择(数字):

if /i "%cho%"=="1" goto EVN87

if /i "%cho%"=="2" goto EVN151

if /i "%cho%"=="3" goto EVN204

if /i "%cho%"=="0" goto end_flag

echo 你的输入有误,请重新输入

rem &&pause&&cls&&goto statart

goto Restart

:EVN87

rem 更新当前环境为87环境配置

@xcopy .87spdbedw.pm %AUTO_HOME%bin /s /I /y >> run.log

@xcopy .87LOGON_DW_CRSUSR %AUTO_HOME%etc /s /I /y >> run.log

@xcopy .87hosts %HOST_HOME% /s /I /y >> run.log

echo 成功切为:87开发环境!

goto Restart

:EVN151

rem 更新当前环境为151环境配置

@xcopy .151spdbedw.pm %AUTO_HOME%bin /s /I /y >> run.log

@xcopy .151LOGON_DW_CRSUSR %AUTO_HOME%etc /s /I /y >> run.log

@xcopy .151hosts %HOST_HOME% /s /I /y >> run.log

echo 成功切为:151UAT环境!

goto Restart

:EVN204

rem 设置PIP服务器

rem wmic ENVIRONMENT where "name='PIP_SERVER1' and username=''" set VariableValue="10.112.9.204" 1>nul

rem wmic ENVIRONMENT where "name='PIP_SERVER2' and username=''" set VariableValue="10.112.9.204" 1>nul

rem wmic ENVIRONMENT where "name='PIP_SERVER3' and username=''" set VariableValue="10.112.9.204" 1>nul

rem wmic ENVIRONMENT where "name='PIP_SERVER4' and username=''" set VariableValue="10.112.9.204" 1>nul

rem 更新当前环境为PKG环境配置

@xcopy .204spdbedw.pm %AUTO_HOME%bin /s /I /y >> run.log

@xcopy .204LOGON_DW_CRSUSR %AUTO_HOME%etc /s /I /y >> run.log

@xcopy .204hosts %HOST_HOME% /s /I /y >> run.log

echo 成功切为:PKG打包环境!

goto Restart

:end_flag

echo 结束,谢谢!

pause