DOS在运行批处理时,
会依次执行批处理中的每条命令,并且会在显示器上显示,如果你不想让它们显示,可以加一个“echo off”。
当然,“echo off”也是命令,它本身也会显示,如果连这条也不显示,就在前面加个“@”。
比如如果当前目录是E:/execute,执行cd c:/temp命令之后,当前目录不会产生任何变化。
要保证当前目录修改成功,必须加 /d参数,即cd /d c:/temp
会依次执行批处理中的每条命令,并且会在显示器上显示,如果你不想让它们显示,可以加一个“echo off”。
当然,“echo off”也是命令,它本身也会显示,如果连这条也不显示,就在前面加个“@”。
@本身就是一条指令,意思是跟在它后面的指令的执行及结果都不会在DOS界面上显示出来,当然只是它所在的那一行有效,另起一行的指令@将不再有效。
调用程序并获得标准输出。
::以java调用为例
for /f %%i in ( 'java -jar LogAnalysis.jar ') do @set var=%%i
有时其他程序的输出不是标准输出,可以能要重定向才好
@echo off echo 正在检测jdk环境 ::这里为什么是标准错误输出我也不清楚。。 java -version 2>c:\var\deployWin32\echojdk.txt for /f %%i in (c:\var\deployWin32\echojdk.txt) do @set varA=%%i ::若存在 jdk,那么varA以Java打头 if %varA%==Java (goto theFinishInstall) else (goto theInstall) :theInstall echo 即将安装jdk start c:\var\deployWin32\programs\jdk.exe goto theEnd :theFinishInstall echo jdk已安装完成 :theEnd pause
获取标准输入,与用户交互
@echo off set /p a=请输入昵称 echo 您的<span style="font-family: Arial, Helvetica, sans-serif;">昵称为 </span><span style="font-family: Arial, Helvetica, sans-serif;">%a%</span> ::pause为按任意键退出 效果 pause
if语句
if %var% == the-value (goto do_a) else (goto do_b) :do_a call c:\var\crawl\autokill.bat ping /n 10 127.0.0.1 > nul call c:\var\crawl\autoupdate.bat goto end :do_b echo hello :end
更改工作目录
cd命令是不会修改当前的drive(即磁盘)的。比如如果当前目录是E:/execute,执行cd c:/temp命令之后,当前目录不会产生任何变化。
要保证当前目录修改成功,必须加 /d参数,即cd /d c:/temp