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 不的意思
  • d - 目录
  • h - 隐藏文件
  • s - 系统文件
  • l - 重新分析点
  • r - 只读文件
  • a - 准备存档的文件
  • i - 非内容索引文件
可以使用这些值的任何组合,但不要使用空格分隔值。 (可选)可以使用冒号 (:) 分隔符,也可以使用连字符 (-) 作为前缀来表示“not”。 例如,使用 -s 属性不会显示系统文件。
/o[[:]<sortorder>] 根据 sortorder 对输出进行排序,它可以是以下值的任意组合:
  • n - 按名称按字母顺序排列
  • e - 按扩展名按字母顺序排列
  • g - 首先对目录进行分组
  • s - 按大小,最先小
  • d - 按日期/时间,最早
  • -使用前缀反转排序顺序
按列出这些值的顺序处理多个值。 不要使用空格分隔多个值,但可以选择使用冒号 (:) 。

如果未指定 sortorder , dir /o 按字母顺序列出目录,后跟按字母顺序排序的文件。

/t[[:]<timefield>] 指定要显示或用于排序的时间字段。 可用的 时间字段 值为:
  • c - 创建
  • a - 上次访问
  • w - 上次写入
/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

https://img2020.cnblogs.com/blog/2703087/202112/2703087-20211227172606685-766222883.png

%val:~i,index%

字符串第i个字符起截取index个字符诺没有指定几个字符则第i个字符以后字符全部截取

当count为负数,count表示自尾部开始排除的字符数量

https://img2020.cnblogs.com/blog/2703087/202112/2703087-20211227172512143-74329503.png

 

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

运行结果:

 

posted @ 2023-01-23 21:48  HFDKJ  阅读(280)  评论(0)    收藏  举报