CMD知识点

本文介绍了CMD脚本中的字符串操作,包括如何使用%1, %2, %3等变量保存命令行参数,并给出了示例。此外,详细讲解了for循环的语法与用法,如循环输出数字、增量序列以及启用延缓环境变量扩展的影响,通过实例展示了开关开启和关闭的不同效果。在写作过程中,作者遇到了编辑器保存草稿后显示错误的问题,但最终通过重启浏览器解决了问题。" 127555259,15115704,分布式数据库技术解析与应用规划,"['数据库', '分布式', 'java']

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

1.字符串操作

1.语法

选项语法:

     %~I         - 删除任何引号("),扩展 %I
     %~fI        - 将 %I 扩展到一个完全合格的路径名
     %~dI        - 仅将 %I 扩展到一个驱动器号
     %~pI        - 仅将 %I 扩展到一个路径
     %~nI        - 仅将 %I 扩展到一个文件名
     %~xI        - 仅将 %I 扩展到一个文件扩展名
     %~sI        - 扩展的路径只含有短名
     %~aI        - 将 %I 扩展到文件的文件属性
     %~tI        - 将 %I 扩展到文件的日期/时间
     %~zI        - 将 %I 扩展到文件的大小
     %~$PATH:I   - 查找列在路径环境变量的目录,并将 %I 扩展
                   到找到的第一个完全合格的名称。如果环境变量名
                   未被定义,或者没有找到文件,此组合键会扩展到
                   空字符串

可以组合修饰符来得到多重结果:

     %~dpI       - 仅将 %I 扩展到一个驱动器号和路径
     %~nxI       - 仅将 %I 扩展到一个文件名和扩展名
     %~fsI       - 仅将 %I 扩展到一个带有短名的完整路径名
     %~dp$PATH:I - 搜索列在路径环境变量的目录,并将 %I 扩展
                   到找到的第一个驱动器号和路径。
     %~ftzaI     - 将 %I 扩展到类似输出线路的 DIR

在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法
用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名
比较易读,而且避免与不分大小写的组合键混淆。(来自cmd for /?)

2.示例

在CMD脚本中,启动脚本时 start my.cmd var1 var2 var3 后面跟的参数var1 var2 var3传进脚本中后分别被%1 %2 %3 这三个变量来保存。%0 的值是脚本文件的路径,字符串操作就是在操作这些变量中的值。

示例
这里写图片描述
输出 (两种运行方式 两个结果)
1. 在cmd.exe中输入example 123 !@# qwe 的结果
输出
2. 直接双击example.cmd的结果
双击运行的结果

以下都采用双击运行的方式来运行脚本

@echo off
echo %%~I         - 删除任何引号("),扩展 %%I
echo %%~fI        - 将 %%I 扩展到一个完全合格的路径名
echo %%~dI        - 仅将 %%I 扩展到一个驱动器号
echo %%~pI        - 仅将 %%I 扩展到一个路径
echo %%~nI        - 仅将 %%I 扩展到一个文件名
echo %%~xI        - 仅将 %%I 扩展到一个文件扩展名
echo %%~sI        - 扩展的路径只含有短名
echo %%~aI        - 将 %%I 扩展到文件的文件属性
echo %%~tI        - 将 %%I 扩展到文件的日期/时间
echo %%~zI        - 将 %%I 扩展到文件的大小
echo %%~$PATH:I   - 查找列在路径环境变量的目录,并将 %%I 扩展
echo              到找到的第一个完全合格的名称。如果环境变量名
echo              未被定义,或者没有找到文件,此组合键会扩展到
echo              空字符串
echo ------------------------------------------------------
echo %%0        = %0
echo %%~0       = %~0
echo %%~f0      = %~f0
echo %%~d0      = %~d0
echo %%~p0      = %~p0
echo %%~n0      = %~n0
echo %%~x0      = %~x0
echo %%~s0      = %~s0
echo %%~a0      = %~a0
echo %%~t0      = %~t0
echo %%~z0      = %~z0
echo %%~$path:0 = %~$path:0
pause

输出

%0        = "C:\Users\y\Desktop\example.cmd"
%~0       = C:\Users\y\Desktop\example.cmd
%~f0      = C:\Users\y\Desktop\example.cmd
%~d0      = C:
%~p0      = \Users\y\Desktop\
%~n0      = example
%~x0      = .cmd
%~s0      = C:\Users\y\Desktop\example.cmd
%~a0      = --a--------
%~t0      = 2015/08/22 17:12
%~z0      = 1066
%~$path:0 = C:\Users\y\Desktop\example.cmd
请按任意键继续. . .

2. for循环 & setlocal enabledelayedexpansion(启用延缓环境变量扩展)

1.语法

C:\Users\y\Desktop>for /?
对一组文件中的每一个文件执行某个特定命令。

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

  %variable  指定一个单一字母可替换的参数。
  (set)      指定一个或一组文件。可以使用通配符。
  command    指定对每个文件执行的命令。
  command-parameters
             为特定命令指定参数或命令行开关。

在批处理程序中使用 FOR 命令时,指定变量请使用 %%variable
而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.

2.示例

1.循环输出数字
@echo off
for %%a in (1,1,2,3,5,8) do (
  echo %%a
  )
pause

输出

1
1
2
3
5
8
请按任意键继续. . .
2.增量方式输出数字序列

FOR /L %variable IN (start,step,end) DO command [command-parameters]

@echo off
for /L %%a in (1,1,5) do (
  echo %%a
  )
pause

输出

1
2
3
4
5
请按任意键继续. . .
3.for循环中的变量

类似%0这样的变量在for循环中要用%%0来表示
类似%path%这种变量在for循环中要用!path!来表示
另外要在for循环中实时改变变量的值需要打开enabledelayedexpansion(启用延缓环境变量扩展)开关
以下是示例:

1. 不打开enabledelayedexpansion开关
@echo off
set var=123
for /L %%a in (1,1,5) do (
  set var=%%a
  echo a = %%a var = !var! %%var%% = %var%
  )
pause

输出

a = 1 var = !var! %var% = 123
a = 2 var = !var! %var% = 123
a = 3 var = !var! %var% = 123
a = 4 var = !var! %var% = 123
a = 5 var = !var! %var% = 123
请按任意键继续. . .
2.打开enabledelayedexpansion开关
@echo off
setlocal enabledelayedexpansion
set var=123
for /L %%a in (1,1,5) do (
  set var=%%a
  echo a = %%a var = !var! %%var%% = %var%
  )
pause

输出

a = 1 var = 1 %var% = 123
a = 2 var = 2 %var% = 123
a = 3 var = 3 %var% = 123
a = 4 var = 4 %var% = 123
a = 5 var = 5 %var% = 123
请按任意键继续. . .

另外写博文是还遇到编辑器一个错误:
编辑器错误
文章被保存到草稿箱,然后每次打开都是这个。
最后重启了一下浏览器才好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值