日期:2014-05-17  浏览次数:20838 次

windows 批处理学习笔记
在C:\Documents and Settings\meiyoudao>下面建立一个test.bat文件
在文件中输入
dir
ping 127.0.0.1

打开一个cmd窗口(输入test回车,即可运行命令)
C:\Documents and Settings\meiyoudao> test

在文件中输入
@dir
@ping 127.0.0.1

就不会显示命令
可以用一条语句echo off 把命令都隐藏起来. 同时要把echo off 也隐藏起来,就需要@echo off

@echo off
dir
ping 127.0.0.1

即可
======================================================================
@ehcho off                               //关闭命令内容显示,只显示结果
if"%OS%" == "Windows_NT" setlocal      //如果系统变量是Windows_NT,就环境改动的本地化操作
rem  if"%OS%" == "Windows_NT" setlocal  //注释使用
if not "%CATALINA_HOME%" == "" goto gotHome    //如果环境变量CATALINA_HOME不等于空,就goto 到 gotHome  跳转到标记位置:gotHome


:gotHome         //  标记位置

if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome  //如果该文件存在,就跳转

:okHome            //  标记位置
set EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat   //初始化一个变量
set CMD_LINE_ARGS=       //初始化一个变量
if "%1" == """" goto okHome               //如果参数1不为空,就设置为CMD_LINE_ARGS的原值串上%1参数值
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1    


call "%EXECUTABLE%" start %CMD_LINE_ARGS%          //运行另一个批处理,并把CMD_LINE_ARGS变量作为参数串过去,  start 为第一个参数
============================================================

text.bat代码为:

echo %0 %1 %2

C:\Documents and Settings\meiyoudao>test.bat 4 34
test.bat 4 34

//%0  表示参数0 为 test.bat
//%1  表示参数1 为 4
//%2  表示参数2 为 43


=====================================================================

text.bat代码为:
shift
echo %0 %1 %2

C:\Documents and Settings\meiyoudao>test.bat 4 34  555
test.bat 4 34

//%0  表示参数0 为 4
//%1  表示参数1 为 43
//%2  表示参数2 为 555


//注:详细请看 help shift

//更改批处理文件中可替换参数的位置。

//SHIFT [/n]

//如果命令扩展名被启用,SHIFT 命令支持/n 命令行开关;该命令行开关告诉
//命令从第 n 个参数开始移位;n 介于零和八之间。例如:

//    SHIFT /2

//会将 %3 移位到 %2,将 %4 移位到 %3,等等;并且不影响 %0 和 %1。

======================================================================


获取if语句的帮助信息
C:\Documents and Settings\meiyoudao> help if

C:\Documents and Settings\meiyoudao>help setlocal
开始批处理文件中环境改动的本地化操作。在执行 SETLOCAL 之后
所做的环境改动只限于批处理文件。要还原原先的设置,必须执
行 ENDLOCAL。达到批处理文件结尾时,对于该批处理文件的每个
尚未执行的 SETLOCAL 命令,都会有一个隐含的 ENDLOCAL 被执行。