学习Windows批处理命令是为了看懂Tomcat等服务器的启动文件,那些文件都是.bat,下一步学习tomcat的时候去解析这些命令
批处理命令查询的两种方式 :
1:在命令提示符中输入命令 /? 即可看到该命令的说明
2: 在windows中显示桌面 ctrl+d 按F1 在帮助信息中随便输入一个命令: call或者 echo 即可看到很多命令
3:微软官网的说明
看了这篇文章就可以理解数据库导入导出脚本的命令的意义
1:何为批处理命令引用:
批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。
2:一些常用的命令:
首次看一个例子,认识一下批处理:
echo on
type helloWorld.txt
echo 现在关闭命令显示!!!
echo off
type helloWorld.txt
pause
echo on 是显示要执行的命令,如果echo off 不显示要执行的命令 type helloWorld.txt是打开helloWorld.txt的内容,并显示,
pause 表示暂停在那里。
以上语句执行方式 保存到 helloWorld.bat的形式。然后双击即可执行。
一个批处理程序:
@echo off
title 简单的批处理
cls
echo.------1.请输入数字1 并按回车,注销系统
echo.------2.请输入数字2 并按回车,重启系统
echo.------3.请输入数字3 并按回车,关闭系统
echo.------4.请输入其他字符,退出程序。
set num=
set /p num=请选择你要执行的操作
if "%num%"=="1"(
logoff
)
if "%num%"=="2"(
shutdown -r /t 000
)
if "%num%"=="3"(
shutdown -p
)
以上是一个批处理程序。可以单独见一个文本文件,然后把后缀变为bat
双击执行可以看到效果。
1:echo命令
echo 命令用于在屏幕显示相关的文字信息,该命令还可用于控制批处理文件
在执行过程中是否回显命令本身。
命令格式: echo [{on|off}] [message]
参数说明:
--on: 允许批处理文件在执行过程中回显命令。
--off:禁止批处理文件在执行的过程中回显命令。
--message: 表示需要显示在屏幕上的信息
--/?:在命令提示符中显示帮助 测试过
2:@命令
@:是一个非常简单的命令,它用于禁止当前执行的命令回显到屏幕上,
@ 不受 echo 命令设置效果的影响,且该命令本身不会回显在屏幕上。
命令格式: @[command]
参数说明;
--command :要屏蔽回显的命令
--当命令不加任何参数执行的时候,将不产生任何效果
3:goto命令:
goto命令:
是一个流程控制转向命令,它用于控制批处理中的命令执行流程。
命令格式 : goto label
参数说明:label表示批处理文件中的某行,
改行表示执行的新的开始点。
ex:
@echo off
echo .............
goto last
type helloWorld.txt
:last
dir helloWorld.txt
pause
4:pause命令
pause: 这个命令无需任何参数,当命令运行后,会中断执行的语句
命令格式: pause
@echo off
pause
echo 跳过中间命令
goto last
echo helloWorld.txt
:last
dir helloWorld.txts
pause
5:call命令
call : 是一个功能强大的回命令,它不但可以在批处理中调用另一个批处理
,而且还可以调用指定标号后面的所有命令。
命令格式: call [[Dirve:][Filename[BatchParameters]][:label[arguments]]
参数说明:[Dirve:][Filename[ 指定被调用的批处理文件名,当被调用的批处理
文件与已经执行的批处理文件都处于同一个目录时,可以省略盘符和路径。
:label 对于以":label" 开头的批处理程序,指定要传递给其新实例
的命令行信息,包括命令行选项、文件名、批处理参数或者变量。
--/?: 在命令提示符下显示帮助
@echo off
type helloWorld.txt
pause
@echo off
echo 正在调用call.bat
pause
call call.bat
echo called.bat调用完毕!
echo 现在开始调用 “xx”标号后的语句
call :xx
:xx
echo 在xx标号后的命令
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 命令不可以直接调用应用程序。
@echo off
echo 将在新的窗口中显示helloWorld.txt文件内容
start /wait type helloWorld.txt
pause
7:Rem命令
Rem : 是一个注释命令,它用于在批处理中加入相应的说明信息,
这些说明信息可以帮助阅读者理解批处理的功能。
命令格式: rem[comment]
参数说明:
-comment: 指定要作为注释的任何字符串
-/?显示帮助
@echo on
pause rem 这是对pause的解释
start helloWorld.bat
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:
@echo off
:aaa
rem 输入命令赋值给nnn 其中/p代表后面的输入命令
set /p nnn=请输入命令;
%nnn% rem 执行刚才输入的命令
pause
goto aaa rem 跳转到 :aaa的位置 相当于在 :aaa 到 goto aaa之间执行循环
set nnn= rem 把 nnn的值赋值为空
9:if命令
if命令: 非常重要的命令,它通过条件来决定
批处理应该如何执行,在制作复杂批处理时候很有用。
C:\Users\topwqp>if /?
执行批处理程序中的条件处理。
这个可以查看帮助,
ex:
@echo off
echo ----1,请输入1 并按回车,注销系统
echo ----2,请输入2 并按回车,重启系统
echo ----3,请输入3 并按回车,关机系统
echo ----4,请输入4 并按回车,其他操作
set num=
set /p num=请选择你要执行的操作:
if "%num%"=="1"(
logoff
)
if "%num%"=="2"(
shutdown -r /t 000 rem 执行重启操作
)
if "%num%"=="3"(
shutdown -p rem -p代表执行关机操作
)
else命令
@echo off
if exist helloWorld.txt ( echo 找到了helloWorld.txt文件,内容为:
type helloWorld.txt) else (
echo "没有找到helloWorld.txt文件"
)
pause
10:for命令:
for命令: 是批处理一个强大,复杂命令,它可对一组不同的文件或
数据进行循环处理。
关于 < > >>的使用:
|管道符操作:
> 把内容添加到指定文件中,覆盖以前的文件
>>不覆盖以前的文件
@echo off
for %%x in (*.bat) do (
echo %%x的内容如下:
type %%x
)
pause
11:sort命令
sort 命令: 读取输入、排序数据并将结果写到屏幕上、文件和其他设备上
/?
12:find命令: 这个单独去查
输出到文件的批处理例子:
@echo off
set /p a=请输入ping的次数:
ping 127.0.0.1 -n %a% >>1.txt rem 执行
pause
set a=
@echo off
find "1" 7.txt | sort >6.txt rem 在5.txt中查找1的字符串,并将排序后的输出到6.txt
pause
注意事项:
在复杂的多名令的批处理汇总,要注意if语句。如果在一条
if语句中,有多条命令和多个变量的时候,则命令和变量需要
goto语句的引导! 否则if语句只会调用第一条命令和变量
顺便讲解: title 和 cls的使用
重要: 如果想查找命令: 可以切换到桌面 ctrl + d
快捷键 F1 在输入框中随便输入一个命令 如 call 或者echo
可以看到很多命令。
关于注意事项的说明以下例子有问题的:
@echo off
set /p num=请输入要执行的操作:
if "%num%" == "1" (
set /p a=请输入内容:
set /p b=请输入文件名:
set /p c=请输入复制后的文件名:
echo %a% > %b%.txt
copy %b%.txt c:\%c%.txt
)
pause
set a=
set b=
set c=
set num=
rem 这里有一个问题,如果if语句中有多个变量 只会赋值第一个,以后就不会赋值了。
rem 如果需要多次赋值引导,需要用goto语句引导;
修改利用goto和标签去引导为:
@echo off
set /p num= 请输入要执行的操作:
if "%num%" == "1" (
set /p a=请输入内容:
set /p b=请输入文件名:
set /p c=请输入复制后的文件名:
goto a
:a
echo %a% > %b%.txt
goto b
:b
copy %b%.txt c:\%c%.txt
)
pause
set a=
set b=
set c=
set num=