CMD笔记
简单临时环境配置
rem (rem cmd注释声明) cmd 默认路径: C:\Users\用户名> 有些不喜欢将测试文件放在C盘 这时要将cmd的工作目录更改不然无法找到练习文件 以D盘根目录为例
cd /d d:\
练习文件要以 ANSI编码保存(或者 chcp 65001 指定编码格式;65001)
简单命令
echo
@echo off 回显命令关
echo 窗口打印文本
Pase (暂停)
Rem (注释)
cls (窗口内容清空)
Goto(标签语句)
命令处理引导到由标签标识的行。 找到标签后,处理将继续从下一行开始的命令开始当标签运行完,诺无其他标签干涉则不执行后面语句直接退出
@echo off //回显命令关 echo 测试goto命令 goto balala//跳转到标签 后面语句不执行 dir//打印驱动器 目录/或文件 type 2.txt//打印指定文件内容 : balala//标签 dir 1.txt//打印该文件是否存在
Copy
1.txt复制到d:\目录下
copy c:\1.txt d:\
1.txt复制到d:\目录下,并把它修改为a.bat,
copy c:\123.txt d:\ac.
当前目录下的1子目录中的文件全部拷到
copy .\123
copy con 获取屏幕窗口输入并复制文件 copy 不能对文件夹操作
Dir
显示目录的文件和子目录的列表。 如果未使用参数,此命令将显示磁盘的卷标签和序列号,然后是磁盘上的目录和文件列表, (包括其名称和上次修改的日期和时间) 。 对于文件,此命令显示名称扩展名和大小(以字节为单位)。 此命令还显示列出的文件和目录总数、其累积大小以及磁盘上剩余的可用空间 (字节) 。
dir [<drive>:][<path>][<filename>] [...] [/p] [/q] [/w] [/d] [/a[[:]<attributes>]][/o[[:]<sortorder>]] [/t[[:]<timefield>]] [/s] [/b] [/l] [/n] [/x] [/c] [/4] [/r]
| 参数 | 说明 |
|---|---|
[<drive>:][<path>] |
指定要在其中查看列表的驱动器和目录。示例; dir d:\ ----我是分隔符---- dir d:\Test |
[<filename>] |
指定要在其中查看列表的特定文件或文件组。示例: dir d:\Test.txt |
| /p | 一次显示一个列表的一个屏幕。 若要查看下一个屏幕,请按任意键。示例:dir d:\ /s /a:d /p (打印D盘文件夹及根目录下子目录名称) |
| /q | 显示文件所有权(管理员)信息。 |
| /W | 以宽格式显示列表,每行包含多达五个文件名或目录名称。 |
| /d | 以 /w 相同的格式显示列表,但文件按列排序。 |
/a[[:]<attributes>] |
仅显示具有指定属性的目录和文件的名称。 如果不使用此参数,该命令将显示除隐藏文件和系统文件之外的所有文件的名称。 如果在未指定任何 属性的情况下使用此参数,该命令将显示所有文件的名称,包括隐藏文件和系统文件。 可能的 属性值 列表包括:示例 :/a:n(h........)或 /a(-n) // 字符 - 表示 not 不的意思
|
/o[[:]<sortorder>] |
根据 sortorder 对输出进行排序,它可以是以下值的任意组合:
如果未指定 sortorder , dir /o 按字母顺序列出目录,后跟按字母顺序排序的文件。 |
/t[[:]<timefield>] |
指定要显示或用于排序的时间字段。 可用的 时间字段 值为:
|
| /s | 列出指定目录和所有子目录中指定文件名的每个匹配项。 |
| /b | 显示目录和文件的裸列表,没有其他信息。 /b 参数替代 /w。 |
| /l | 使用小写显示未排序的目录名称和文件名。 |
| /n | 在屏幕最右侧显示具有文件名的长列表格式。 |
| /x | 显示为非 8dot3 文件名生成的短名称。 显示与 /n 的显示相同,但短名称在长名称之前插入。 |
| /c | 以文件大小显示千位分隔符。 此选项为默认行为。 使用 /-c 隐藏分隔符。 |
| /4 | 以四位数格式显示年份。 |
| /r | 显示文件的备用数据流。 |
| /? | 在命令提示符下显示帮助。 |
type
显示文本文件内容的内置命令。使用 type 命令查看文本文件而不对其进行修改。
type [<drive>:][<path>]<filename>
| 参数 | 描述 |
| [<drive>:][<path>]<filename> | 指定要查看的一个或多个文件的位置和名称。如果包含空格,则必须用引号将其括起来(例如,“文件名包含空格.txt”)。您还可以通过在文件名之间添加空格来添加多个文件名。<filename> |
| /? (d:\>type 1.txt /?) | 显示该命令用法; (TYPE [drive:][path]filename) |
Call
call命令用来从一个批处理脚本中调用另一个批处理脚本;
Call D:\1A.bat\
call标签 执行完标签继续执行后面语句
call :aaaa :
aaaa echo 呼哈
State
启动单独的“命令提示符”窗口来运行指定程序或命令。如果在没有参数的情况下使用,start 将打开第二个命令提示符窗口
start ["title"] [/dPath] [/i] [/min] [/max] [{/separate | /shared}] [{/low | /normal | /high | /realtime | /abovenormal | belownormal}] [/wait] [/b] [FileName] [parameters]
-
1."title" 指定在“命令提示符”窗口标题栏中显示的标题。
start “Hello Word!” -
/dpatch 指定启动目录。
start /d “E:\\” //新建一个窗口并工作目录设置该指定目录 -
/i 将 Cmd.exe 启动环境传送到新的“命令提示符”窗口。
start /i /w /max echo 呼哈 -
/min 启动新的最小化窗口。
-
/max 启动新的最大化窗口。
-
/separate 在单独的内存空间启动 16 位程序。
-
/shared 在共享的内存空间启动 16 位程序。
-
/low 以空闲优先级启动应用程序。
-
/normal 以一般优先级启动应用程序。
-
/high 以高优先级启动应用程序。
-
/realtime 以实时优先级启动应用程序。
-
/abovenormal 以超出常规优先级的方式启动应用程序。
-
/belownormal 以低出常规优先级的方式启动应用程序。
-
/wait 启动应用程序,并等待其结束。
Set
1.显示、设置或删除 cmd.exe 环境变量。
1. SET [variable=[string]]
variable 指定环境变量名。string 指定要指派给变量的一系列字符串。
set power="呼哈"
//暂时设置临时环境变量当前窗口关闭临时变量就回收了
//而且不影响系统保存的环境变量
2. SET
要显示当前环境变量,键入不带参数的 SET。
3. SET [前缀匹配]
如果命令扩展被启用,SET 会如下改变:
可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配 SET 命令已使用的名称的所有变量的值。例如:
4.SET P
会显示所有以字母 P 打头的变量
如果在当前环境中找不到该变量名称,SET 命令将把 ERRORLEVEL设置成 1。
4. SET /A expression
/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式评估器很简单并以递减的优先权顺序支持下列操作:
| 运算符 | 执行的操作 |
|---|---|
( ) |
分组 |
! ~ - |
一元 |
* / % |
算术 |
+ - |
算术 |
<< >> |
逻辑移位 |
& |
位与 |
^ |
位异或 |
= *= /= %= += -= &= ^= |
= <<= >>= |
, |
表达式分隔符 |
5. SET /P variable=[promptString]
/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入之前,显示指定的 promptString。promptString 可以是空的。
6.%val:i=str(int)%
字符串第i个字符替换为int

%val:~i,index%
字符串第i个字符起截取index个字符诺没有指定几个字符则第i个字符以后字符全部截取
当count为负数,count表示自尾部开始排除的字符数量

If 条件语句
if [not] ERRORLEVEL <number> <command> [else <expression>]
//比较大小实例
if 3 LSS 2 (echo 3大于2为假) else (echo 3大于2为真)
if [not] <string1>==<string2> <command> [else <expression>]
//判断字符
@echo off
set /p var1="输入第一个正整数"
set /p var2="输入第二个正整数"
if %var1% GTR %var2% (echo 第一次输入的数比第二次输入的数要大) else (echo 第一次输入的数比第二次输入的数要小)
if [not] exist <filename> <command> [else <expression>]
//判断指定文件存在否
@echo off if exist 1.txt ( type 1.txt) else (echo 不存在1.txt)
参数说明:
- not //指定仅当条件为 false 时才应执行该命令。
- errorlevel <number> //仅当由 Cmd.exe 运行的上一个程序返回等于或大于 数字的退出代码时,才指定 true 条件。
- <command> //如果满足前面的条件,则指定应执行的命令。
- <string1>==<string2> // 仅当 string1 和 string2 相同时,才指定 true 条件。 这些值可以是文本字符串或批处理变量 (例如 %1) 。 不需要将文字字符串括在引号中。
- 处于 <filename> //如果指定的文件名存在,则指定 true 条件
For语句
For %%str(也可以%str ) //字符 in (set获取的目录或文件) do (command命令)
set /a sum=0 for %%x in (*.txt) do (echo %%x) set /a sum=sum+1 echo txt文件一共有%sum%个
| 参数 | 示例 |
| for %%x in (D:\*.bat) do (echo %%x) | 打印D盘根目录下.bat文件名称 |
| for %%i in (*.txt) do (echo %%i) | 打印所运行bat文件根目录下.txt文件名称 |
| /d (文件夹操作) | for /d %%x in (*) do (echo %%x) //打印所运行bat文件根目录下的文件夹 |
| for /d %%x in (???) do (echo %%x) //打印所运行bat文件根目录下的符合三个字母的文件夹(???跟*一样是通配符) | |
| /r (文件操作) | for /r %%x in (*.bat) do (echo %%x) //打印所运行bat文件根目录下.bat文件名称 |
| for /r d:/ %%x in (*.bat) do (echo %%x) //打印指定目录下.所有bat文件名称 | |
| /l | for /l %%x in (1,2,5) do (@echo %%x) //迭代数值 %%x 以初始值1 以2为单位递增到 5 (打印:1 3 5) |
| for /l %%x in (1,1,5) do (start cmd) //打开5个cmd窗口 | |
| /f | FOR /F %%i IN (a1.txt) do (echo %%i) //读取a1.txt内容 以空格分隔 依次传入%%i |
| /delims |
用来告诉for每一行应该拿什么作为分隔符,默认的分隔符是空格和tab键 for /f "delims=*" %%x in (a1.txt) do (echo %%x) |
| /tokens |
通过delims将每一行分为更小的元素时,由它来控制要取哪一个或哪几个 for /f "tokens=2 delims= " %%i in (a.txt) do echo %%i 或者for /f "tokens=2,3 delims= " %%i in (a.txt) do echo %%i %%j //分割后分别取每行第2个 第3个字符 |
Setlocal 变量延迟
开始批处理文件中环境改动的本地化操作。在执行 SETLOCAL 之后所做的环境改动只限于批处理文件。要还原原先的设置,必须执行 ENDLOCAL。 达到批处理文件结尾时,对于该批处理文件的每个尚未执行的 SETLOCAL 命令,都会有一个隐含的 ENDLOCAL 被执行
@ECHO OFF SET PA PAUSE SETLOCAL SET PA=E:\TOOLS SET PA PAUSE ENDLOCAL SET PA
Shift
更改批处理文件中可替换参数的位置: 可引用的参数为%0~%9,%0是指批处理文件的本身,也可以说是一个外部命令;%1~%9是批处理参数,也称形参;而替换形参的实参若超过 了批处理文件中所规定数值(9个)且想在批处理文件中应用这些实参的话
@echo off :round if "%1"=="" goto end echo %1内容 type %1 echo ---分隔符---- shift goto round :end
shift /x //跳过X位置形参
@echo off cls echo %1 %2 %3 %4 %5 %6 %7 %8 %9 shift /0 echo %1 %2 %3 %4 %5 %6 %7 %8 %9 shift /1 echo %1 %2 %3 %4 %5 %6 %7 %8 %9 shift /2 echo %1 %2 %3 %4 %5 %6 %7 %8 %9 shift /3 echo %1 %2 %3 %4 %5 %6 %7 %8 %9 shift /4 echo %1 %2 %3 %4 %5 %6 %7 %8 %9 shift /5 echo %1 %2 %3 %4 %5 %6 %7 %8 %9 shift /6 echo %1 %2 %3 %4 %5 %6 %7 %8 %9 shift /7 echo %1 %2 %3 %4 %5 %6 %7 %8 %9 shift /8 echo %1 %2 %3 %4 %5 %6 %7 %8 %9
运行下面代码指定bat文件时需键入实参空格隔开 比如: shift10.bat 1 2 3 4 5 6 7 8 9 11 12 13 14 15 16 17 18 19 20 21
运行结果:


浙公网安备 33010602011771号