偶尔会有做点自动化的需求,
以往每次写批处理文件都是现查。
今天把用到的批处理常用操作做个记录。
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
。
注意:
以上 set 命令中,等号前后都没有空格
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.删除文件或重命名
del some_pathfilename.txt
带 option 参数的删除:(同删除文件夹)
del /s /q d: emp est.txt
重命名文件:
格式:rename 路径文件名.扩展名 新文件名.扩展名
rename d: emp est.txt log.txt
注:
在命令行中,创建与删除文件或文件夹操作,
不必切换盘符,而切换当前目录需要先切换盘符
8.输出文件,比如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 文件名用完整路径即可
9.切换目录
进入指定路径,不切换盘符的时候
cd folderA
cd c:userfolderB
即,可以直接进入当前目录下的某个目录,
或,指定完整路径,进入指定的文件夹
其中,如果不在同一个盘符下,
需要,先切换盘符,如 d:
d:
cd work asks
如上,也可以一次指定两层目录
返回上层目录:cd..
,cd 后面加两个小点
10.查看当前目录下内容
dir
以上命令输出当前目录下文件夹和文件(仅本层目录)
11.启动其它程序或命令
示例,启动 chrome 浏览器,并打开指定网页
start chrome.exe www.baidu.com
12.注释的写法
12.1 注释的三种方式
REM 注释内容,不会被执行
@REM 同样是注释,不执行
:: 这也是注释内容,不会执行
一种是REM
或@REM
后面跟注释内容,
另一种是 ::
,两个冒号后面跟注释内容,
注意命令后面的空格
12.2 关于 echo
echo hi!
将会输出 hi!
即,echo 后面的内容会被显示出来。
往往在批处理文件(*.bat)开头处,
设置是否回显,
echo on
或
echo off
区别是,是否将执行的语句本身显示在命令行。
on
的时候显示,off
的时候不显示,仅打印执行结果。
另外我们在输出 log 文件时也是用到了 echo。
12.3 echo
与注释
echo on
的时候:(只有 REM 会回显)
REM
的注释回显@REM
的注释不会回显::
的注释不会回显
echo off
的时候:(都不回显,没有区别)
REM
的注释不回显@REM
的注释不回显::
的注释不回显