巧用.bat批处理文件

一、概念先行

搜狗词条解释:
bat文件是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下输入批处理文件的名称,或者双击该批处理文件,系统就会调用cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。[1]入侵者常常通过批处理文件的编写来实现多工具的组合入侵、自动入侵及结果提取等功能。

二、入门基础

在这里插入图片描述

怎么添加注释:使用rem或者::或者@echo,
rem:有回显功能
:: :普通注释
@echo:关闭这一行回显功能

**怎么让执行信息停留在界面?**使用pause
pause,让脚本暂停,通常为了防止cmd一闪而过,添加pause,方便查看输出内容
相对路径 和绝对路径?

@echo off  
::相对路径
echo relative path >C:\>1\相对路径.txt  
::绝对路径
echo absolute path >C:\Users\zhilan.zheng\Desktop\1\绝对路径.txt 
pause


使用bat运行截图工具?


start snippingtool

程序运行是否正确?

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

CALL理解?

CALL命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后,再继续执行原来的批处理 CALL command
调用一条批处理命令,和直接执行命令效果一样,特殊情况下很有用,比如变量的多级嵌套,见教程后面。在批处理编程中,可以根据一定条件生成命令字符串,用call可以执行该字符串,见例子。
CALL [drive:][path]filename [batch-parameters] 调用的其它批处理程序。filename
参数必须具有 .bat 或 .cmd 扩展名。 CALL :label arguments
调用本文件内命令段,相当于子程序。被调用的命令段以标签:label开头 以命令goto :eof结尾。

一些特殊的符号:

常用特殊符号
1、@ 命令行回显屏蔽符
2、% 批处理变量引导符
3、> 重定向符
4、>> 重定向符
5、<、>&、<& 重定向符
6、| 命令管道符
7、^ 转义字符
8、& 组合命令
9、&& 组合命令
10、|| 组合命令
11、“” 字符串界定符
12、, 逗号
13、; 分号
14、() 括号
15、! 感叹号
16、批处理中可能会见到的其它特殊标记符: (略)
CR(0D) 命令行结束符
Escape(1B) ANSI转义字符引导符
Space(20) 常用的参数界定符
Tab(09) ; = 不常用的参数界定符
+ COPY命令文件连接符
* ? 文件通配符
/ 参数开关引导符
: 批处理标签引导符

三、使用示例【超实用】

dir命令:

`前缀名
@echo off
title 批量添加前缀名
echo.
echo 本批处理可批量添加前缀名
echo.
echo.&set /p strtemp3= 请输入要添加前缀的文件类型:
echo.&set /p strtemp2= 请输入要添加前缀的文件名字符串(不变则直接回车):
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /a /b *.%strtemp3%') do (
ren "%%~a" "%strtemp2%%%a")
echo.
echo OK了!
echo.
pause`

后缀名
@echo off
title 批量添加后缀名
echo.
echo 本批处理可批量添加后缀名
echo.
echo.&set /p strtemp3= 请输入要添加后缀名:
echo.&set /p strtemp2= 请输入要添加后缀名字符串(不变则直接回车):
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /a /b *.%strtemp3%') do (
ren "%%~a" "%%a.%strtemp2%")
echo.
echo OK了!
echo.
pause
@echo off

echo 正在清除系统垃圾文件,请稍等......
del /f /s /q %systemdrive%\*.tmp
del /f /s /q %systemdrive%\*._mp
del /f /s /q %systemdrive%\*.log
del /f /s /q %systemdrive%\*.gid
del /f /s /q %systemdrive%\*.chk
del /f /s /q %systemdrive%\*.old
del /f /s /q %systemdrive%\recycled\*.*
del /f /s /q %windir%\*.bak
del /f /s /q %windir%\prefetch\*.*
rd /s /q %windir%\temp & md %windir%\temp
del /f /q %userprofile%\小甜饼s\*.*
del /f /q %userprofile%\recent\*.*
del /f /s /q "%userprofile%\Local Settings\Temporary Internet  Files\*.*"
del /f /s /q "%userprofile%\Local Settings\Temp\*.*"
del /f /s /q "%userprofile%\recent\*.*"
echo 清除系统LJ完成!
echo. & pause
::查看文件下的一类文件
@echo off
for /r "C:\1" %%v in (*.txt) do echo %%v # 匹配*.txt
pause>nul
::批量修改文件属性  
ren *.ss *.jpg
::新建一个文件并往文件里面写入hello word
@echo off  
echo hello world >nihao.c
pause

人机交互一下?

@echo off
echo 1.aa
echo 2.bb
:first
echo Enter your choice:
set /p opt=
if %opt%==1 goto one
if %opt%==2 goto two
echo no such choice
goto first
​
:one
echo your choice 1
pause:nul
exit
​
:two
echo your choice 2
pause:nul
exit

猜你喜欢

转载自blog.csdn.net/weixin_43673603/article/details/126268017