cmd语法

本文深入探讨了CMD命令行和批处理脚本的基础与高级应用,涵盖了变量设置、数学与字符串计算、for循环的多种使用场景,以及遍历文件夹和计数循环的技巧。通过实例演示了如何在CMD中进行文本解析和文件操作,是一份全面的CMD与批处理指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cmd语法

一、基本命令
二、高级命令
(一)set
1.变量读入

SET /P variable=[promptString]

将变量变量数值设成用户输入的一行输入

(set/p variablre=[空格]:空格也会被输出。)

@echo off
::下面 k 值是 16 个空格。
set k=
echo %k%水光潋滟晴方好, 
echo %k%山色空蒙雨亦奇。 
echo %k%欲把西湖比西子, 
echo %k%淡妆浓抹总相宜。 
pause
2.数学计算

SET /A expression

指定等号右边的字符串为待计算的数字表达式

@echo off
::下面 k 值是 16 个空格。
set k=
echo %k%水光潋滟晴方好, 
echo %k%山色空蒙雨亦奇。 
echo %k%欲把西湖比西子, 
echo %k%淡妆浓抹总相宜。 
pause
3.字符串计算

%PATH:str1=str2%

将字符串变量**%PATH%**中的 str1 替换为 str2

@echo off
set a=bbs.verybat.cn
echo 替换前的值: "%a%" 
set var=%a:.=伤脑筋%
echo 替换后的值: "%var%" 
pause

运行显示:
替换前的值: "bbs.verybat.cn"
替换后的值: "bbs 伤脑筋 verybat 伤脑筋 cn"

解释“set var=%a:.=伤脑筋% ”,a 是要进行字符替换的变量,"."为 要替换的值, "伤脑筋"为替换后的值, 执行后就会把变量%a%里面 的"."全部替换为"伤脑筋"。

三、批处理for语句
(一)、for语句的基本用法

基本形式:
Cmd下:

FOR %variable IN (set) DO command [command-parameters]

批处理中:

FOR %%variable IN (set) DO command [command-parameters]

区别:cmd下变量引用为%i,批处理下为%%i.

(二)、For /f 文本解析

它能够对字符串进行操作**,也能够对命令的返回值进行操作还可以 访问硬盘上的 ASCII 码文件比如 txt 文档等。常用于文本信息编辑,** 如查询、提取、替换等等 。

FOR /F "Delims=符号" %%I    IN (Command1)      DO Command2

for 默认以空格作分割符**,当我们没有写"delims=",**就默认以空格分隔

for /f "tokens=1,2 delims=:" %%a in (易经.txt) do echo %%a %%b

1、“tokens=1,2”中 1 和 2 数字之间**,**用的逗号必须是英文格式逗号。

2、这里需要显示两列的内容**,**那么,echo 后面就需要用多个变量符 号%%a 和%%b。同样,如果需要显示三列内容就必须这么写 echo%%a%%b%%c。

(三)、遍历文件夹
For /r

1.基本形式:for /r 目录 %%i in (元素集合) do 命令语句集合
作用:列举“目录”及该目录路径下所有子目录,并把列举出来的目录路径和元素集合中的每一个元素拼接成形如“目录路径\元素”格式的新字符串,然后,对每一条这样的新字符串执行“命令语句集合”中的每一条命令。
2.当“元素集合”带以点号分隔的通配符?或*的时候,把“元素集合”视为文件(不视为文件夹),整条语句的作用是匹配“目录”所指文件夹及其所有子文件夹下匹配的文件;若不以点号分隔,则把“元素集合”视为文件夹(不视为文件);
3.当省略掉“目录”时,则针对当前目录;
4.当元素集合中仅仅是一个点号的时候,将只列举目录路径;

★与dir /ad /s的区别:

For /r:不能显示隐藏文件,速度快
Dir /ad:可以指定特定格式,速度慢

For /d

作用:只能匹配第一层目录
带通配符时:匹配文件夹

For  /r /d

显示当前目录下所有的文件夹(包括子文件夹)
等价于dir /ad /s/b

(四)、For /l :计数循环

基本形式:

for /l %%i in (x,y,z) do (.......)

x——起始值
y——步长
y——终止值 (不能取0)

五、FOR变量
变量作用
~I- 删除任何引号("),扩充 %I
%~fI- 将 %I 扩充到一个完全合格的路径名
%~dI- 仅将 %I 扩充到一个驱动器号
%~pI- 仅将 %I 扩充到一个路径
%~nI- 仅将 %I 扩充到一个文件名
%~xI- 仅将 %I 扩充到一个文件扩展名
%~sI- 扩充的路径只含有短名
%~aI- 将 %I 扩充到文件的文件属性
%~tI- 将 %I 扩充到文件的日期**/**时间
%~zI- 将 %I 扩充到文件的大小
%~dpI- 仅将 %I 扩充到一个驱动器号和路径
%~nxI- 仅将 %I 扩充到一个文件名和扩展名
%~fsI- 仅将 %I 扩充到一个带有短名的完整路径名

其中 I 为变量

ECHO off
SETlOCAL enabledelayedexpansion

SET FIND_DIR=E:\dirA\dirC\dirD

for /R %FIND_DIR% %%f in (*.txt) do (
    SET FULL_PATH=%%f
    ECHO 完整的路径: !FULL_PATH!

    SET FILE_DIR=%%~dpf
    ECHO 所在的目录: !FILE_DIR!

    SET FILE_NAME=%%~nf
    ECHO 无后缀文件: !FILE_NAME!

    SET FILE_EXT=%%~xf
    ECHO 文件名后缀: !FILE_EXT!

    SET "FILE_NAME_NOT_PATH=%%~nxf"
    ECHO 无路径文件: !FILE_NAME_NOT_PATH!

    SET "FULL_PATH_NOT_EXT=%%~dpnf"
    ECHO 无后缀全名: !FULL_PATH_NOT_EXT!
)
pause
--------------------- 
作者:AlbertS 
来源:优快云 
原文:https://blog.youkuaiyun.com/albertsh/article/details/79651437 
版权声明:本文为博主原创文章,转载请附上博文链接!

运行结果

完整的路径: E:\dirA\dirC\dirD\eee.txt
所在的目录: E:\dirA\dirC\dirD\
无后缀文件: eee
文件名后缀: .txt
无路径文件: eee.txt
无后缀全名: E:\dirA\dirC\dirD\eee
六、参考文献

for的变量

变量延迟

批处理for语句从入门到精通

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值