批处理常用命令

BAT CMD

Posted by gomyck on May 20, 2020

批处理常用命令总结

批处理常用命令及用法大全

命令帮助

$ instructions /?

echo 和 @回显控制命令

@                    #关闭单行回显
echo off             #从下一行开始关闭回显
@echo off            #从本行开始关闭回显。一般批处理第一行都是这个
echo on              #从下一行开始打开回显
echo                 #显示当前是 echo off 状态还是 echo on 状态
echo.                #输出一个"回车换行",一般就是指空白行
echo hello world     #输出hello world
# "关闭回显"是指运行批处理文件时,不显示文件里的每条命令,只显示运行结果批处理开始和结束时,系统都会自动打开

errorlevel程序返回码

echo %errorlevel%每个命令运行结束,可以用这个命令行格式查看返回码用于判断刚才的命令是否执行成功默认值为0, 一般命令执行出错会设 errorlevel 为1

dir显示目录中的文件和子目录列表

dir                 #显示当前目录中的文件和子目录
dir /a              #显示当前目录中的文件和子目录,包括隐藏文件和系统文件
dir c: /a:d         #显示 C 盘当前目录中的目录
dir c:/ /a:-d       #显示 C 盘根目录中的文件dir d:/mp3 /b/p
dir *.exe /s        #显示当前目录和子目录里所有的.exe文件其中 * 是通配符,代表所有的文件名,还一个通配符 ? 代表一个
dir .               #显示当前目录中的文件和子目录
dir ..              #显示当前目录的上级目录中的文件和子目录

cd命令

cd                  #更改当前目录
cd mp3              #进入当前目录中的mp3 目录
cd ..               #进入当前目录中的上级目录
cd/                 #进入根目录
cd                  #显示当前目录
cd /d d:/mp3        #可以同时更改盘符和目录
cd "Documents and Settings"/All users文件名带空格,路径前需要加上引号!!如果更改到的目录不存在,则出错返

md&rd命令

md abc              #在当前目录里建立子目录 abc
md d:/a/b/c         #如果 d:/a 不存在,将会自动创建
rd abc              #删除当前目录里的 abc 子目录,要求为空目录
rd /s/q d:/temp     #删除 d:/temp 文件夹及其子文件夹和文件,不需要按 Y 确认

del命令

del d:/test.txt     #删除指定文件,不能是隐藏、系统、只读文件
del *.*删除当前目录里的所有文件,不包括隐藏、系统、只读文件,要求按 Y 确认
del /q/a/f d:/temp/*.*删除 d:/temp 文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录
del /q/a/f/s d:/temp/*.*删除 d:/temp 及子文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录

其他常用命令

ren 1.txt 2.bak      #把 1.txt 更名为 2.bak
ren *.txt *.ini      #把当前目录里所有.txt文件改成.ini文件
ren d:/temp tmp      #支持对文件夹的重命名
type c:/boot.ini     #显示指定文件的内容,程序文件一般会显示乱码
type *.txt           #显示当前目录里所有.txt文件的内容
copy c:/test.txt d:/ #复制 c:/test.txt 文件到 d:/
copy c:/test.txt d:/test.bak #复制 c:/test.txt 文件到 d:/ ,并重命名为 test.bak
copy c:/*.*复制 c:/          #所有文件到当前目录,不包括隐藏文件和系统文件不指定目标路径,则默认目标路径为当前目录
copy con test.txt            #从屏幕上等待输入,按 Ctrl+Z 结束输入,输入内容存为test.txt文件con代表屏幕,prn代表打印机,nul代表空设备
copy 1.txt + 2.txt 3.txt     #合并 1.txt 和 2.txt 的内容,保存为 3.txt 文件如果不指定 3.txt ,则保存到 1.txt
copy test.txt +     #复制文件到自己,实际上是修改了文件日期
title 新标题         #可以看到cmd窗口的标题栏变了
vol                 #显示卷标
label               #显示卷标,同时提示输入新卷标
label c:system      #设置C盘的卷标为 system
md                  #创建目录
rd                  #删除目录
del                 #删除文件
ren                 #文件重命名
cls                 #清屏
type                #显示文件内容
copy                #拷贝文件
title               #设置cmd窗口的标题
ver                 #显示系统版本
pause               #暂停命令,运行该命令时,将显示消息:请按任意键继续 . . .,一般用于看清楚屏幕上显示的内容
rem                 #注释命令注释行不执行操作
::                  #注释命令注释行不执行操作
date                #和 time日期和时间
date                #显示当前日期,并提示输入新日期,按"回车"略过输入
date/t              #只显示当前日期,不提示输入新日期
time                #显示当前时间,并提示输入新时间,按"回车"略过输入
time/t              #只显示当前时间,不提示输入新时间
:label              #行首为:表示该行是标签行,标签行不执行操作
goto label          #跳转到指定的标签那一行
find "abc" c:/test.txt在 c:/test.txt #文件里查找含 abc 字符串的行如果找不到,将设 errorlevel 返回码为1
find /i "abc" c:/test.txt            #查找含 abc 的行,忽略大小写
find /c "abc" c:/test.txt            #显示含 abc 的行的行数
more c:/test.txt                     #逐屏显示 c:/test.txt 的文件内容
tree d:/                             #显示D盘的文件目录结构
c: & cd/ & dir /w                    #相当于把下面3行命令写到1行去了c:cd/dir /w
f: && cd/ && dir >c:/test.txt        #注意如果f盘不存在,那么后面2条命令将不会执行
find "ok" c:/test.txt && echo        #成功如果找到了"ok"字样,就显示"成功",找不到就不显示
find "ok" c:/test.txt || echo        #不成功如果找不到"ok"字样,就显示"不成功",找到了就不显示
goto            #和 :跳转命令
find            #(外部命令)查找命令
more            #(外部命令)逐屏显示
tree            #显示目录结构
&               #顺序执行多条命令,而不管命令是否执行成功
&&              #顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令
||              #顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令
|               #管道命令
%CD%            #代表当前目录的字符串
%DATE%          #当前日期
%TIME%          #当前时间
%RANDOM%        #随机整数,介于0~32767
%ERRORLEVEL%    #当前ERRORLEVEL 值
%CMDEXTVERSION% #当前命令处理器扩展名版本号
%CMDCMDLINE%    #调用命令处理器的原始命令行可以用echo命令查看每个变量值,如 echo %time%

一些不常用的内部命令

>& 将一个句柄的输出写入到另一个句柄的输入中
<& 从一个句柄读取输入并将其写入到另一个句柄输出中
shift 命令行传递给批处理的参数不止9个时,用以切换参数
color 设置cmd窗口的显示颜色
pormpt 更改命令提示符号,默认都是 盘符:/路径/> ,如 c:/>
format (外部命令)格式化硬盘
format c: /q/u/autotest/, q表示快速格式化, /autotest表示自动格式化, 不需要按 Y 确认, /u表示每字节用F6覆盖硬盘数据, 使其不可用软件恢复
format c: /c  #格式化C盘,并检测坏道

ping (外部命令)

#不停的向192.168.1.200计算机发送大小为65500byte的数据包
ping -l 65500 -t 192.168.1.200
#ping自己10次,可用于批处理延时10秒
ping -n 10 127.0.0.1>nul

SC (外部命令)服务控制命令

#创建服务,服务名称aaa,显示名称bbb,启动类型:自动可执行文件的路径"C:/WINDOWS/System32/alg.exe"
sc create aaa displayname= bbb start= auto binpath= "C:/WINDOWS/System32/alg.exe"
#更改aaa的启动类型:已禁用更改aaa的可执行文件的路径"C:/WINDOWS/System32/svchost.exe -k netsvcs"
sc config aaa start= disabled binpath= "C:/WINDOWS/System32/svchost.exe -k netsvcs"
#更改aaa的启动类型:手动更改aaa的显示名称ddd
sc config aaa start= demand displayname= ddd
sc description aaa "ccc" #更改aaa的描述为ccc
sc start aaa   #启动aaa服务
sc stop aaa    #停止aaa服务
sc delete aaa  #删除aaa服务

批处理bat命令–获取当前盘符和当前目录和上级目录 批处理命令获取当前盘符和当前目录 %~d0 是当前盘符 %cd% 是当前目录 可以用echo %cd%进行打印测试

@echo off
echo 当前盘符: %~d0
echo 当前盘符和路径: %~dp0
echo 当前盘符和路径的短文件名格式: %~sdp0
echo 当前批处理全路径: %~f0
echo 当前CMD默认目录: %cd%
pause
@echo off
set b=%cd% //将当前目录保存到参数b中,等号前后不要有空格
C:
cd program files
cd microsoft visual studio
cd common
cd msdev98
cd bin
msdev "%b%\test.dsp" /MAKE "test- Win32 Release" /REBUILD //(VC6.0)
devenv "%b%\Tool Utility\Tool Utility.sln" /REBUILD //(VS2010)
pause
#注意:如果路径中包含空格,则应该将路径加文件名用双引号括起来。

通过批处理取当前目录的上一级目录

@echo off
if %cd%==%cd:~,3% echo 当前目录已经是%cd:~,1%盘的根目录!&goto end
cd..
set "bd=%cd%"
cd..
set "bbd=%cd%"
if "%bbd%"=="%bd%"
    (echo 上一级目录是: %cd:~,1%盘的根目录!)
else
    call echo 上一级目录是: "%%bd:%bbd%\=%%"
:end
pause