windows脚本
windows脚本

.bat 如何需要输出中文,则需要设置字符集 windws/GB2312
常用的命令
以下是一些常用的 Windows 批处理命令的简要介绍:
echo:用于在命令行中显示文本或变量的值。 示例:
echo Hello, World!set:用于设置和显示环境变量的值。 示例:
set dbname=mydatabase set backupdir=D:\backupif:用于执行条件语句,根据条件的结果执行不同的操作。 示例:
if %var%==value ( rem 条件为真时执行的命令 ) else ( rem 条件为假时执行的命令 )for:用于创建循环结构,对一组文件或文本进行迭代处理。 示例:
for %%variable in (list) do ( rem 执行的命令,可使用 %%variable 引用当前迭代的项 )goto:用于跳转到批处理脚本中的指定标签位置。 示例:
goto label :label rem 标签位置的命令call:用于调用另一个批处理脚本,并在完成后返回。 示例:
call other_script.batpause:用于暂停脚本的执行,等待用户按下任意键后继续。 示例:
pausemkdir:用于创建目录或文件夹。 示例:
mkdir directory_namexcopy:用于复制文件和目录。 示例:
xcopy source_path destination_path /E /C /I /Q /Ydel:用于删除文件。 示例:
del file_namerename:用于重命名文件或文件夹。 示例:
rename old_name new_namecopy:用于复制文件。 示例:
copy source_file destination_filemove:用于移动文件或文件夹到指定位置。 示例:
move source_file destination_folderrem:用于注释
注释 :@echo off 关闭了命令回显
常用用法
变量的使用
使用 %包裹着
rem 例如:
set name=lihuan
set backup_date = "%date%"
echo "%name%"
rem 使用变量,并且进行拼接
set backupfile=%name%_expdp_%backup_date%.text
日期和时间
目前主机时间格式存在差别,如果想创建 yyyyMMddHHmmss 这样格式的文件名,则需要先查询 日期格式
C:\Users\cyinl>echo "%date%"
"2023/06/20 周一"
C:\Users\lihuan>echo "%date%"
"周三 2024/03/20"
rem 针对主机日期格式为 2024/03/20 周三
set backup_date=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
rem 针对主机日期格式为 周三 2024/03/20
set backup_date=%Date:~3,4%%Date:~8,2%%Date:~11,2%%Time:~3,2%%Time:~6,2%
最优处理,同时处理了时间出现空格的情况
rem 构造日期时间格式作为文件名组成部分 例如:2024032292315
if "%date:~0,1%"=="周" (
set "formatted_datetime=%date:~3,4%%date:~8,2%%date:~11,2%%time:~0,2%%time:~3,2%%time:~6,2%"
) else (
set "formatted_datetime=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%"
)
rem 替换时间 0-10 直接 会出现空格的场景
set "datetime=%formatted_datetime: =%"
echo %datetime%
删除过期文件
默认是删除当前文件夹下的 或者 指定 /p . 来代表当前目录
set dbname=sdt_yjwz
set dir=D:\files
rem 删除过期文件,这里是超过 7 天就删除 --
FORFILES /P . /M %dbname%*.dmp /D -7 /C "cmd /c echo %time% deleting..@file.. &del @file"
rem 删除 D:\files 目录下的 匹配 sdt_yjwz*.dmp 文件
forfiles /p %dir%\ /m %dbname%*.dmp /d -15 /c "cmd /c del @file /f"
rem 删除当前目录下的 过期文件,这里是超过15天就删除
forfiles /m %dbname%*.dmp /d -15 /c "cmd /c del @file /f"
压缩文件
WinRAR 命令,是主机安装了WinRAR并且配置了环境变量才 直接用
-ep1:该参数只包括文件,而不包含文件夹路径
@echo off
rem 设置备份文件的路径
set backupfile=%dir%\%dbname%_%backup_date%.sql
rem 设置最终的数据库备份文件的压缩文件路径
set backupfileRar=%dir%\%dbname%_%backup_date%.rar
echo 当前文件夹路径:%cd%
rem 使用mysqldump对指定的MySql进行备份
%exec_dir% -h%host% -P%port% -u%user% -p%pass% -c --add-drop-table %dbname% > %backupfile%
rem 使用WinRAR压缩文件
WinRAR a -ep1 %backupfileRar% %backupfile%