Windows批处理

来源:互联网 发布:淘宝优惠券怎么删掉 编辑:程序博客网 时间:2024/05/24 06:38

目录(?)[+]

学习Windows批处理命令是为了看懂Tomcat等服务器的启动文件,那些文件都是.bat,下一步学习tomcat的时候去解析这些命令

脚本之家

批处理命令查询的两种方式 :

1:在命令提示符中输入命令  /? 即可看到该命令的说明

2: 在windows中显示桌面 ctrl+d 按F1  在帮助信息中随便输入一个命令: call或者 echo 即可看到很多命令

3:微软官网的说明

学习参考

以下批处理脚本的下载

看了这篇文章就可以理解数据库导入导出脚本的命令的意义

1:何为批处理命令引用:

批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。


2:一些常用的命令:

首次看一个例子,认识一下批处理:

[plain] view plain copy
  1. echo on  
  2. type helloWorld.txt  
  3. echo 现在关闭命令显示!!!  
  4. echo off  
  5. type helloWorld.txt  
  6. pause  

echo on 是显示要执行的命令,如果echo off 不显示要执行的命令  type helloWorld.txt是打开helloWorld.txt的内容,并显示,

pause 表示暂停在那里。

以上语句执行方式 保存到 helloWorld.bat的形式。然后双击即可执行。


一个批处理程序:

[plain] view plain copy
  1. @echo off  
  2. title 简单的批处理  
  3. cls  
  4. echo.------1.请输入数字1 并按回车,注销系统  
  5. echo.------2.请输入数字2 并按回车,重启系统  
  6. echo.------3.请输入数字3 并按回车,关闭系统  
  7. echo.------4.请输入其他字符,退出程序。  
  8. set num=  
  9. set /p num=请选择你要执行的操作  
  10. if "%num%"=="1"(  
  11. logoff  
  12. )  
  13. if "%num%"=="2"(  
  14. shutdown -r /t 000  
  15. )  
  16. if "%num%"=="3"(  
  17. shutdown -p  
  18. )  
以上是一个批处理程序。可以单独见一个文本文件,然后把后缀变为bat
双击执行可以看到效果。


1:echo命令

echo 命令用于在屏幕显示相关的文字信息,该命令还可用于控制批处理文件
在执行过程中是否回显命令本身。


命令格式: echo [{on|off}] [message]
参数说明:
--on: 允许批处理文件在执行过程中回显命令。
--off:禁止批处理文件在执行的过程中回显命令。
--message: 表示需要显示在屏幕上的信息
--/?:在命令提示符中显示帮助 测试过


2:@命令

@:是一个非常简单的命令,它用于禁止当前执行的命令回显到屏幕上,
@ 不受 echo 命令设置效果的影响,且该命令本身不会回显在屏幕上。


命令格式: @[command]
参数说明;
--command  :要屏蔽回显的命令
--当命令不加任何参数执行的时候,将不产生任何效果


3:goto命令:

goto命令:
是一个流程控制转向命令,它用于控制批处理中的命令执行流程。
命令格式 :  goto label
参数说明:label表示批处理文件中的某行,
改行表示执行的新的开始点。

ex:

[plain] view plain copy
  1. @echo off  
  2. echo .............  
  3. goto last  
  4. type helloWorld.txt  
  5. :last  
  6. dir helloWorld.txt  
  7. pause  


4:pause命令

pause: 这个命令无需任何参数,当命令运行后,会中断执行的语句
命令格式: pause


[plain] view plain copy
  1. @echo off  
  2. pause  
  3. echo 跳过中间命令  
  4. goto last  
  5. echo helloWorld.txt  
  6. :last  
  7. dir helloWorld.txts  
  8. pause  


5:call命令

[plain] view plain copy
  1. call : 是一个功能强大的回命令,它不但可以在批处理中调用另一个批处理  
  2. ,而且还可以调用指定标号后面的所有命令。  
  3. 命令格式: call [[Dirve:][Filename[BatchParameters]][:label[arguments]]  
  4.   
  5. 参数说明:[Dirve:][Filename[ 指定被调用的批处理文件名,当被调用的批处理  
  6. 文件与已经执行的批处理文件都处于同一个目录时,可以省略盘符和路径。  
  7.   
  8. :label 对于以":label" 开头的批处理程序,指定要传递给其新实例  
  9. 的命令行信息,包括命令行选项、文件名、批处理参数或者变量。  
  10. --/?: 在命令提示符下显示帮助  


[plain] view plain copy
  1. @echo off  
  2. type helloWorld.txt  
  3. pause  
[plain] view plain copy
  1. @echo off  
  2. echo 正在调用call.bat  
  3. pause  
  4. call call.bat  
  5. echo called.bat调用完毕!  
  6. echo 现在开始调用 “xx”标号后的语句  
  7. call :xx  
  8.   
  9. :xx  
  10. echo 在xx标号后的命令  
  11. pause  

6:start命令

start : 用于重新启动一个单独的窗口,然后在新窗口中执行指定的
程序或命令


命令格式:  


START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
      [command/program] [parameters]


    "title"     在窗口标题栏中显示的标题。
    path        启动目录。
    B           启动应用程序,但不创建新窗口。应用程序已忽略 ^C 处理。
                除非应用程序启用 ^C 处理,否则 ^Break 是唯一可以中断
                该应用程序的方式。
    I           新的环境将是传递给 cmd.exe 的原始环境,而不是当前环境。


    MIN         以最小化方式启动窗口。
    MAX         以最大化方式启动窗口。
    SEPARATE    在单独的内存空间中启动 16 位 Windows 程序。
    SHARED      在共享内存空间中启动 16 位 Windows 程序。
    LOW         在 IDLE 优先级类中启动应用程序。
    NORMAL      在 NORMAL 优先级类中启动应用程序。
    HIGH        在 HIGH 优先级类中启动应用程序。
    REALTIME    在 REALTIME 优先级类中启动应用程序。
    ABOVENORMAL 在 ABOVENORMAL 优先级类中启动应用程序。
    BELOWNORMAL 在 BELOWNORMAL 优先级类中启动应用程序。
    
重点应用 /wait命令,然后观察  如果正常exit的时候有什么区别。
    
start 可以直接调用应用程序
call  命令不可以直接调用应用程序。

[plain] view plain copy
  1. @echo off  
  2. echo 将在新的窗口中显示helloWorld.txt文件内容  
  3. start /wait type helloWorld.txt  
  4. pause  

7:Rem命令

Rem : 是一个注释命令,它用于在批处理中加入相应的说明信息,
这些说明信息可以帮助阅读者理解批处理的功能。
命令格式: rem[comment]
参数说明:
 -comment: 指定要作为注释的任何字符串
 -/?显示帮助

[plain] view plain copy
  1. @echo on  
  2. pause rem 这是对pause的解释  
  3. start helloWorld.bat  
  4. pause  


8:set命令

set:专门用来创建、设置、查看或者删除环境变量。对于一些功能
复杂的批处理,自定义变量是不可缺少的。


C:\Users\topwqp>set /?
显示、设置或删除 cmd.exe 环境变量。


SET [variable=[string]]


  variable  指定环境变量名。
  string    指定要指派给变量的一系列字符串。


要显示当前环境变量,键入不带参数的 SET。


如果命令扩展被启用,SET 会如下改变:


可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配
SET 命令已使用的名称的所有变量的值。例如:


    SET P


会显示所有以字母 P 打头的变量


如果在当前环境中找不到该变量名称,SET 命令将把 ERRORLEVEL
设置成 1。


SET 命令不允许变量名含有等号。

ex:

[plain] view plain copy
  1. @echo off  
  2. :aaa      
  3. rem 输入命令赋值给nnn 其中/p代表后面的输入命令  
  4. set /p nnn=请输入命令;  
  5. %nnn%  rem 执行刚才输入的命令  
  6. pause  
  7. goto aaa  rem 跳转到 :aaa的位置 相当于在 :aaa 到 goto aaa之间执行循环  
  8. set nnn= rem 把 nnn的值赋值为空  


9:if命令

if命令: 非常重要的命令,它通过条件来决定
批处理应该如何执行,在制作复杂批处理时候很有用。


C:\Users\topwqp>if /?
执行批处理程序中的条件处理。


这个可以查看帮助, 

ex:

[plain] view plain copy
  1. @echo off  
  2. echo ----1,请输入1 并按回车,注销系统  
  3. echo ----2,请输入2 并按回车,重启系统  
  4. echo ----3,请输入3 并按回车,关机系统  
  5. echo ----4,请输入4 并按回车,其他操作  
  6. set num=  
  7. set /p num=请选择你要执行的操作:  
  8. if "%num%"=="1"(  
  9. logoff  
  10. )  
  11.   
  12. if "%num%"=="2"(  
  13. shutdown -r /t 000 rem 执行重启操作  
  14. )  
  15.   
  16. if "%num%"=="3"(  
  17. shutdown -p  rem -p代表执行关机操作  
  18. )  

else命令

[plain] view plain copy
  1. @echo off  
  2. if exist helloWorld.txt ( echo 找到了helloWorld.txt文件,内容为:  
  3. type helloWorld.txt) else (  
  4.  echo "没有找到helloWorld.txt文件"  
  5. )  
  6. pause  

10:for命令:

for命令: 是批处理一个强大,复杂命令,它可对一组不同的文件或
数据进行循环处理。
关于 <   >  >>的使用:
|管道符操作:


> 把内容添加到指定文件中,覆盖以前的文件
>>不覆盖以前的文件


[plain] view plain copy
  1. @echo off  
  2. for %%x in (*.bat) do (  
  3. echo %%x的内容如下:  
  4. type %%x  
  5. )  
  6. pause  

11:sort命令

sort 命令: 读取输入、排序数据并将结果写到屏幕上、文件和其他设备上
/?

12:find命令: 这个单独去查


输出到文件的批处理例子:

[plain] view plain copy
  1. @echo off  
  2. set /p a=请输入ping的次数:  
  3. ping 127.0.0.1 -n %a% >>1.txt  rem 执行  
  4. pause  
  5. set a=  


管道的使用的例子:

[plain] view plain copy
  1. @echo off  
  2. find "1" 7.txt | sort >6.txt   rem 在5.txt中查找1的字符串,并将排序后的输出到6.txt  
  3. pause  



注意事项:


在复杂的多名令的批处理汇总,要注意if语句。如果在一条
if语句中,有多条命令和多个变量的时候,则命令和变量需要
goto语句的引导! 否则if语句只会调用第一条命令和变量
顺便讲解:  title 和  cls的使用


重要:  如果想查找命令: 可以切换到桌面 ctrl + d
快捷键 F1 在输入框中随便输入一个命令 如 call 或者echo
可以看到很多命令。


关于注意事项的说明以下例子有问题的:

[plain] view plain copy
  1. @echo off  
  2. set /p num=请输入要执行的操作:  
  3. if "%num%" == "1" (  
  4. set /p a=请输入内容:  
  5. set /p b=请输入文件名:  
  6. set /p c=请输入复制后的文件名:  
  7. echo %a% > %b%.txt  
  8. copy %b%.txt c:\%c%.txt  
  9. )  
  10. pause  
  11. set a=  
  12. set b=  
  13. set c=   
  14. set num=  
  15.   
  16. rem 这里有一个问题,如果if语句中有多个变量 只会赋值第一个,以后就不会赋值了。  
  17. rem 如果需要多次赋值引导,需要用goto语句引导;  

修改利用goto和标签去引导为:

[plain] view plain copy
  1. @echo off  
  2. set /p num= 请输入要执行的操作:  
  3. if "%num%" == "1" (  
  4. set /p a=请输入内容:  
  5. set /p b=请输入文件名:  
  6. set /p c=请输入复制后的文件名:  
  7. goto a  
  8. :a  
  9. echo %a% > %b%.txt  
  10. goto b  
  11. :b  
  12. copy %b%.txt  c:\%c%.txt  
  13. )  
  14. pause  
  15. set a=  
  16. set b=  
  17. set c=   
  18. set num=  

0 0