偶尔会有做点自动化的需求,
以往每次写批处理文件都是现查。
今天把用到的批处理常用操作做个记录。
1.批处理文件的调用与传参
a.bat
./b.bat Hello Wrold REM 或 REM call b.bat Hello Wrold
b.bat
set param1=%1 set param2=%2 echo %param1% echo %param2%
以上将分别打出
Hello
和World
。
2.字符串拼接与截取
b.bat
set greeting=%param1%-%param2% echo %greeting%
以上将输出:
Hello-World
3.字符串截取
截取命令格式为
SomeText:~FromIndex:Count
截取示例:
set name=CoderMonkey echo %name:~0,4%
以上将输出:
Code
注:可以反向截取(FromIndex < 0)
4.字符串替换
替换命令格式为
SomeText:source=target
替换示例:
set name=CoderMonkey echo %name:Monkey=Gorilla%
以上将输出:
CoderGorilla
5.常用的变量
%cd% current directory,当前目录 %date% 日期 %time% 时刻,包含毫秒
6.创建与删除文件夹
mkdir "foldername"
创建一个文件夹
rmdir "folder_path"
删除指定文件夹
rmdir /s /q "folder_path"
/s
表示删除指定目录及其下的子目录和文件/q
表示静默处理,不询问
7.输出文件,比如log日志
echo "【要输出的文字信息,比如当前日期时刻】%date% %time%" > log.txt
日期会显示为:
2019/12/17
的格式,
时刻会输出为:13:58:28.24
如果想把日期时间用作 log 文件名,
由于/
跟:
都是不可用于文件名的字符,
这里我们就用到了上面提到的替换功能。示例:
REM 将`/`跟`:`替换为空 set logfilename=%date:/=%_%time::=_%.txt echo "%date% %time%Log信息" > "%logfilename%"
这里的 log 文件会在当前执行的路径下生成。
需要在指定路径下生成的话,在 log 文件名用完整路径即可