admin 管理员组文章数量: 1086019
批处理常用基本命令
批处理基本命令
**备注:**大小写不敏感(命令符忽略大小写),以ANSI保存为bat(否则中文显示乱码)
1、 echo 打开回显或关闭请求回显功能,或显示消息,如
echo “测试连接”
2、 @表示不显示后面的命令,如
@echo off 执行以后,后面所有的命令均不显示,包括本条命令
【echo off 执行以后,后面所有的命令均不显示,但本条命令是显示的】
@ping 127.0.0.1 -n 5 >nul (等待5秒,不显示命令)
3、 Pause 程序暂停,按任意键继续
4、 延时启动程序
1) ping延时启动 (时间精度为1秒,不够精确)
@ping 127.0.0.1 –n 6 >nul
2) choice (时间精确,CPU占用低,是最佳选择)
@choice /t 5 /d y /n >nul
3) 其他几种不常见,自己私下看(略)
5、 start 调用外部程序命令 / 打开文件或文件夹
(所有的DOS命令和命令行程序都可以由start命令来调用)
start “” “C:****\spyxx8\spyxx.exe” (常规窗口启动exe)
start /max "C:**\spyxx8\spyxx.exe" (以最大化窗口运行)
start “” “%WINDIR%” (打开WINDOWS文件夹)
start / (其他很多参数,网上参考略)
start D:\文件夹1 (打开文件夹)
start D:\文件夹1\test.txt (打开文件)
6、 call 命令(一个批处理脚本中调用另一个批处理脚本)
call c:\code\run.bat (执行另一个批处理)
call和start区别
1) call的时候,他们拥有同一个壳cmd.exe,在同一个进程当中,所以他们的变量是互通的
2) start的时候,他们拥有两个壳cmd.exe,但child.bat可以看成是main.bat的子进程,子进程可以读取父进程中的变量,“不同进程不能传值”,“相同进程单向传值,老子传儿子,非儿子传老子”
3) 例子:
test1.bat
@echo off
set a=name111
start test2.bat // 改成call test2.bat,查看差异
echo %a%
pause
test2.bat
@echo off
goto label
echo 1
echo 2
:label
echo 3
echo 4
echo %a%
set a=namebbb
7、 模拟回车echo.|
echo.|analysisOUITxtTool2.exe decryptdate
(第三方analysisOUITxtTool2.exe 工具运行后会暂停显示,需按回车继续,使用以上命令可以直接自动回车继续)
8、 结束进程
- Taskkill
taskkill /f /im “spyxx.exe”
其他如下:
taskkill /f /im a* (结束以a开头的所有进程)
taskkill /f /im abc* (结束以abc开头的所有进程)
taskkill /f /im .bat (结束所有扩展名为bat的进程,也就是结束当前正在运行的所有批处理程序)
taskkill /f /im a.cmd (结束以a开头的所有扩展名为cmd的进程,也就是结束当前所有以a开头的批处理程序)
taskkill /pid[进程码] -t(结束该进程) -f(强制结束该进程以及所有子进程) - wmic process Where name=“进程名称” call terminate
wmic process where name=“spyxx.exe” call terminate
备注:常用的call terminate和taskkill /im 进程名称 ,这两条可以同时关闭多个进程名相同的进程
9、 常用注释符 - :: 注释内容, 按行注释
- REM 注释时sh不执行后面的语句,但是会显示
3)%****% 按行注释, ::注意引用bat变量也是%%,容易混淆
如下:
::wmic process where name=“spyxx.exe” call terminate
REM wmic process where name=“spyxx.exe” call terminate
%wmic process where name=“spyxx.exe” call terminate%
10、 %cd% 获取当前目录
%cd% 是当前目录
@echo off
set b=%cd% //将当前目录保存到参数b中,等号前后不要有空格
cd %b%\tool\ //进入当前目录的下一级子目录
例如:
echo “获取当前目录”
@echo off
set b=%cd%
echo %b%
cd %b%\tool
set b=%cd%
echo %b%
echo “测试完毕”
输出:
11、 进入上一级目录
例如:
@echo off
set b=%cd%
echo %b%
cd %b%\tool
set b=%cd%
echo %b%
cd…
set “bbd=%cd%”
echo %bbd%
echo “测试完毕”
输出:
其他:
echo %~f0 当前批处理全路径(输出C:\Users\zhoulihong\Desktop\Beyond\11.bat)
%~d0 是当前盘符(输出 C: )
%~dp0 当前盘符和路径(输出 C:\Users\zhoulihong\Desktop\Beyond\)
cd %~dp0 就是进入批处理所在目录了
12、 Copy复制文件
copy “c:\ Program Files\123.txt” d:\ (拷贝文件至d:\盘目录下)
copy “c:\ Program Files\123.txt” d:\abc.bat (123.txt复制到d:\目录下,并把它修改为abc.bat )
copy c:\123 d:\abc (将c:\123 目录中所有文件复制到d:\abc目录中)
copy c:\123*.rm d:\abc /y (c:\123 目录中所有rm格式的文件复制到d:\abc目录中,同名强制覆盖)
13、 Xcopy拷贝文件夹
xcopy e:/. d: /s /h (复制 E:/ 盘上所有文件到 D:/ 盘上)
xcopy e:/. d: /s /h /d /c /y (复制 E:/ 盘上所有文件到 D:/ 盘上,某个出错的文件和某个正在使用中文件而继续复制其他文件)
14、 Del删除文件或目录
del “C:\Program Files\t\1.txt” (删除文件1.txt)
del /p d:\123*.* (删除d:\123目录下所有文件,如果你想让它在删除前都询问你是否删除,加上/p参数)
del /s d:\123*.* (删除d:\123目录及其子目录下所有文件)
del /s /q d:\123*.* (删除d:\123目录及其子目录下所有文件。通过/q参数则无需确认直接删除)
del …\test.txt (删除上一级目录下的test.txt)
del .\TEST*.o (删除当前目录TEST文件夹下的所有.o文件)
del test.txt (删除当前目录下的test.txt文件)
注意:删除不掉提示拒绝访问,需要管理员身份启动批处理,方法如下
1) 批处理右键—以管理员身份运行
2) 批处理代码里增加
【%1 mshta vbscript:CreateObject(“Shell.Application”).ShellExecute(“cmd.exe”,"/c %~s0 ::","",“runas”,1)(window.close)&&exit
cd /d “%~dp0” 】
3)其他自己再搜索
15、 Ren 重命名
ren *.txt *.mp3 (把.txt文件扩展名修改为mp3)
ren aa.txt bb.c (改文件名称,把aa.txt改为bb.c)
16、 Md创建文件夹
md test (当前目录下创建文件夹test)
md d:\test (d盘创建文件夹test)
17、 创建文件
cd.>a.txt (当前目录下创建文件a.txt)
cd.>d:\a.txt (d盘目录下创建文件a.txt)
18、 Rd删除文件夹(不能删除文件)
rd d:\123 (删除D盘下的空文件夹123)
rd /s d:\123 (删除非控文件夹123,/S参数控制)
rd /s /q d:\123 (在使用/S参数时,系统会提示: d:\123 是否确认(Y/N)? 此时通过/Q参数可以使其不用询问而直接删除)
总结:
1)del用来删除文件,rd用来删除文件夹
2)del可以用来删除某一文件夹中的所有文件
3)rd /s 可以用来删除非空的文件夹
19、 Goto流程控制转向命令
:start1 -----------------前面冒号不能省,标识符中不能含有逗号、冒号等,最大有效长度为8个字符
start “” “C:\Users\Administrator\Desktop\1\md5.exe”
start “” “C:\Program Files (x86)\Tencent\QQ\Bin\QQ.exe”
ping 127.0.0.1 -n 2
wmic process where name=“md5.exe” call terminate
wmic process where name=“QQ.exe” call terminate
goto start1
20、 For命令 (in之后,do之前的括号不能省略,注意前后空格)
1)循环创建文件
for /L %%f in (1,2,5) do cd.>%%f.txt (创建5个空白文档txt,编号从1到5;从1开始,按步长2递增,最大到5)
for /L %%f in (1,1,5) do echo 我测试>%%f.txt (创建5个空白文档,每个文档输入“我测试”文字)
for /L %%f in (1,1,5) do cd.>>文件%%f.txt ( 创建5个空白文档,每个文档名称以“文件“开头,注意>> )
2)查找文件
for %%i in (??.txt) do echo “%%i” (列出当前目录下只用两个字符作为文件名的文本文件)
3)读取内容显示
for /f %%i in (test.txt) do echo %%i (读取当前目录下test.txt文件内容显示)
4)其他用法如
21、 If 命令
1)IF [NOT] EXIST filename do command
IF EXIST test.txt (del test.txt) ELSE echo test.txt missing
2)IF ERRORLEVEL (环境变量errorlevel的初始值为0,当一些命令执行不成功,就会返回一个数值,如:1 ,2 等)
XCOPY “C:\Users\zzz\1\test.txt” “C:\Users\zzz1\2”
IF ERRORLEVEL 1 ECHO 文件拷贝失败
IF ERRORLEVEL 0 ECHO 成功拷贝文件
XCOPY
0 成功拷贝文件
1 未找到拷贝文件
2 用户通过ctrl-c中止拷贝操作
4 预置错误阻止文件拷贝操作
5 拷贝过程中写盘错误
-
IF检测字符串是否相等(不是“=”,而是“”)
@echo off
set “str=The test”
REM 检测变量%str%是否等于test,如果相等,显示OK,否则显示NO
if “%str%”“test” (echo OK) else echo NO -
IF检测数值
@echo off
set /a num1=20
set /a num2=15
if %num1% gtr %num2% echo %num1%大于%num2%
if %num1% EQU %num2% echo %num1%等于%num2%
if %num1% LSS %num2% echo %num1%小于%num2%
pause>nul
比较运算符一览:
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
22、 Set命令
1)给变量设值
@echo off
set str=My name is zzz
echo %str%
2)显示环境变量
set 会显示当前所有的系统环境变量
3) 其他见
=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase
23、 shutdown 关机命令
shutdown -s -t 0 (立即关机)
shutdown -s -t 300 (延时300秒关机)
at 23:30 shutdown -s -t 0 (定时关机)
shutdown –a (取消关机,不小心点了关机或是中途反悔不想关机,可以取消关机就好了)
本文标签: 批处理常用基本命令
版权声明:本文标题:批处理常用基本命令 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1686729576a30209.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论