DOS批处理笔记

编程

  • 1. 获取帮助

    • 1.1. help命令。
    • 1.2. /?参数。
  • 2. 文件和目录
  • 3. 变量和运算
  • 4. 字符串
  • 5. 日期和时间
  • 6. 条件分支
  • 7. 循环
  • 8. 常用方法

    • 8.1. 显示bat文件名
    • 8.2. 获得bat文件目录
    • 8.3. 关闭回显
    • 8.4. 执行而不显示命令
    • 8.5. 字符转义
    • 8.6. 读取ini文件
    • 8.7. 备份文件并添加时间戳
    • 8.8. 查看程序名和进程ID
    • 8.9. 查看监听端口和程序名、进程ID
    • 8.10. 查看Git版本号
  • 9. 编辑记录

1 获取帮助

Windows系统自带的命令行程序和批处理语句大多带有说明。这些说明介绍了程序和语句的用法,有些还带有示例。查看说明的方法有两个,一是通过help命令,二是使用/?参数。

1.1 help命令。

help命令可以查看语句或程序的说明,比如

help if

help tasklist

如果没有参数,help命令打印出批处理支持的语句和程序。

1.2 /?参数。

批处理语句和程序支持/?参数,这个参数让程序显示使用说明,如

if /?

findstr /?

2 文件和目录

查看目录。

dir

dir命令的常用参数有

/b

只显示文件名

/s

显示子目录下的文件

/ad

只显示子目录

/ah

只显示隐藏文件

/a-d

只显示文件

/os

从小到大排序

/od

按日期排序

/o-s

从大到小排序

/o-d

按日期逆序排序

删除文件。

del

删除目录。

rmdir

切换工作目录。

cd

复制文件。

copy

xcopy

移动文件。

move

3 变量和运算

设置变量。

SET a=1

ECHO %a%

SET /A num=10

设置全局变量。

ENDLOCAL & (

SET "globalvar1=%localvar1%"

SET "globalvar2=%localvar2%"

)

设置数值变量。

SET /A num1=20

SET /A num2=15

预定义变量。

%cd%

%date%

%time%

%errorlevel%

%cmdcmdline%

4 字符串

SET x=abc

ECHO %x%

从位置0开始,长度为2的子字符串。

%str:~0,2%

去除字符串中的空格。

SET s=" a b c"

SET "s=%s: =%"

ECHO %s%

输出:abc

%str:~0,2%

表示str从位置0开始,长度为2的子串。

5 日期和时间

查看日期。

date /t

查看时间。

time /t

日期和时间变量。

echo %date%

echo %time%

获得年、月、日。

set year=%date:~0,4%

echo %year%

set month=%date:~5,2%

echo %month%

set day=%date:~8,2%

echo %day%

set weekday=%date:~11,2%

echo %weekday%

获得小时、分钟、秒钟。

set hour=%time:~0,2%

echo %hour%

set minute=%time:~3,2%

echo %minute%

set second=%time:~6,2%

echo %second%

6 条件分支

IFEXIST filename. (

del filename.

) ELSE (

echo filename. missing.

)

IF"%str%"=="test" (ECHO OK) ELSE (ECHO NO)

IF %num1% GTR %num2% ECHO %num1%大于%num2%

IF %num1% EQU %num2% ECHO %num1%等于%num2%

IF %num1% LSS %num2% ECHO %num1%小于%num2%

IF [NOT] EXIST filename command

IF [NOT] str1==str2 command

IF [NOT] ERRORLEVEL number command

if [/i] [not] STRING1==STRING2 COMMAND

if [/i] STRING1 COMPARE-OP STRING2 COMMAND

开关/i说明比较时不区分大小写。在后一种格式中,COMPARE-OP可以是:

COMPARE-OP

说明

EQU

等于

NEQ

不等于

LSS

小于

LEQ

小于或等于

GTR

大于

GEQ

大于或等于

检查文件是否存在

if [not] existPATH COMMAND

检查变量是否定义

ifdefinedVARIABLE COMMAND

setsuccess=1

ifdefinedsuccessecho"ok"

7 循环

FOR /L %%i IN (1,1,5) DO (SET a=%%i ECHO !a! )

FOR /R %%i IN (*.ini) DO (ECHO %%i) REM 查看目录下的.ini文件

8 常用方法

8.1 显示bat文件名

ECHO %cd%%~0

8.2 获得bat文件目录

CD %cd%%~0..

8.3 关闭回显

ECHO OFF

8.4 执行而不显示命令

@ECHO OFF

8.5 字符转义

^|

8.6 读取ini文件

假设有一个config.ini文件,其内容为

username = John

我们可以使用for语句从其中读取配置项:

for /f "delims== tokens=2" %i in ("type config.ini ^| findstr username") do set name=%i

echo %

输出:John

如果要在脚本里执行,上面的语句要改为

for /f "delims== tokens=2" %%i in ("type config.ini ^| findstr username") do set name=%%i

echo %

8.7 备份文件并添加时间戳

set timestamp=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%

copy /v import.txt import.txt_%timestamp%

8.8 查看程序名和进程ID

for /f "skip=2 tokens=1,2" %i in ("tasklist") do (

set "program_name=%i"

set "process_id=%j"

echo %program_name% %process_id%

)

8.9 查看监听端口和程序名、进程ID

for /f "tokens=2,5" %i in ("netstat -ano ^| findstr LISTENING") do (

set "local_address=%i"

set "process_id=%j"

echo %local_address% %process_id%

)

8.10 查看Git版本号

FOR /F %%i IN ("git rev-parse --short HEAD") DO ( SET commitid=%%i)

ECHO commitid=%commitid%

以上是 DOS批处理笔记 的全部内容, 来源链接: utcz.com/z/514506.html

回到顶部