windows批处理总结

rem echo off 表示之后所有命令行不显示,但命令结果总是会显示的!!  不存在%ROOT_DIR% 、 %CUR_DIR%的变量
rem @表示命令行不显示当前行,但命令结果总是会显示的!! ___ 对后面的行没影响! 参考 http://www.cnblogs.com/sgsoft/archive/2010/09/12/1824275.htmlhttp://www.cnblogs.com/freewl/archive/2008/11/02/1324805.html
@rem asffsaf
@echo 1234
echo off             
echo %ROOT_DIR%
cd ../linuxSocket
echo this is %%cd%%  %cd%
echo this is %%~dp0 %~dp0
echo %CUR_DIR%

dir
IF not ERRORLEVEL 1 goto aa1
IF ERRORLEVEL 0 goto aa2
:aa1
echo 123
:aa2
echo 456

@echo off 
rem (应先判断数值最高的错误码) 
  choice /c dme /m defrag,mem,end[Default:men]

  if errorlevel 3 goto defrag 

  if errorlevel 2 goto mem 

  if errorlevel 1 goto end 

  :defrag 
dir

echo 123

copy 

xcp 

mkdir

  C:UsersLWX193~1Desktop

  goto end 

  :mem 

  mem 

  goto end 

  :end 

  echo good bye

一直有疑问的地方是 @ 的作用, echo off的作用, @echo off 这样的就更加糊涂了、、、 

一些用法也老是忘记。。

errorlevel  
1 不区分大小写,
2 如果需要在echo引用的话,需要用%包起来:

C:Userslwx193682DesktoplinuxSocket>echo errorlevel
errorlevel

C:Userslwx193682DesktoplinuxSocket>echo %errorlevel%
1

如果在if中则不能再用%包起来,否则报错:

if errorlevel 0 echo 123      —— if errorlevel integer doSth 应该是一种语法,不可变更, windows会自动计算%errorlevel % , 如果变成%%errorlevel %%则出问题。。

%x% 应该有直接计算的意思吧

每个命令都有自己的errorlevel 

原文地址:https://www.cnblogs.com/FlyAway2013/p/3555331.html