FOR 命令中有一些变量, 他们的用法许多新手朋友还不太了解, 今天给大家讲解他们的用法! 先把 FOR 的变量全部列出来:
~I - 删除任何引号 ("),扩展 %I 首先我们在桌面建立一个名字为 temp.txt 文本文件, 在里面输入这些内容 FOR /F "delims=" %%i IN (temp.txt) DO @echo %%~i 执行后, 我们看 CMD 的回显如下:
%~fI - 将 %I 扩展到一个完全合格的路径名 执行后显示内容如下 执行后就会显示这些内容 通过对比, 我们很容易就看出没有路径了, 这就是 "将 %I 扩展到一个完全合格的路径名" 的作用 %~dI - 仅将 %I 扩展到一个驱动器号
我就不打结果了, 大家自己复制代码看结果吧, 下面几个都是这么个用法, 代码给出来, 大家自己看结果吧!
然后在把这些代码保存为批处理, 放在桌面. 执行后 CMD 显示如下内容 为什么会这样呢, 还有一行 c:windowsteett 呢? 只能适用于 PATH 变量, 其他变量不行, 如果要比较很多值, 可尝试把值赋予给 PATH 变量, 我没测试! 好了, FOR 的的变量就介绍到这了! bat 批处理 字符串 替换函数 和 字符串截取函数 1、字符串替换 好了,符号说到这,现在说 %PATH:str1=str2% 上面语法的意思就是:将字符串变量 %PATH% 中的 str1 替换为 str2 复制代码 代码如下: @echo off @color 02 set ALL=demo123 echo %ALL% set VAT=%ALL:1=aaa% echo %VAT% --- 结果是 demoaaa23 pause 2、字符串截取 ********************************************** 截取功能统一语法格式为:%a:~[m[,n]]% ********************************************** %a:~0,n% 相当于函数 left(a,n) 取左边 n 位 %a:~-m% 相当于函数 right (a,m) 取右边 m 位 %a:~m,n% 相当于函数 mid(a,m+1,n) 从 m+1 位开始取 n 位 %a:~m,-n% 相当于函数 mid(a,m+1,len(a)-m-n), 从 m+1 位开始,至倒数 n+1 位 %a:~m % 相当于函数 mid(a,m+1,len(a)-m) 或者 right(a,len(a)-m),从 m+1 位开始取右边全部。 结果 1 bat 截取字符串 复制代码 代码如下: @echo off set str=123456789 echo 第一个字符为:%str:~0,1% echo 头两个字符为:%str:~0,2% echo 头 5 个字符为:%str:~0,5% echo 去掉最后一个字符后的字符串为:%str:~0,-1% echo 去掉最后 3 个字符后的字符串为:%str:~0,-3% echo 第 4 个字符为:%str:~3,1% echo 第 4 个及其之后的 3 个字符为:%str:~3,4% echo 最后一个字符为:%str:~-1% echo 最后一个字符为:%str:~-1,1% echo 最后两个字符为:%str:~-1,2% echo 倒数第 4 个字符为:%str:~-4,1% echo 倒数第 4 个及其之后的字符为:%str:~-4% echo 倒数第 4 个及其之后的 1 个字符为:%str:~-4,2% echo 倒数第 4 个及其之后的 2 个字符为:%str:~-4,3% pause 为了说明这个问题, 我在这里把批处理取字符, 做下进一步的解释, 希望对新手有所启发 符标志符 (我是这么理解的),"n" 我们将其理解为指针,"k" 我们将其理解为偏移地址.(注 : 指针和偏移地址都是从零开始数的) 复制代码 代码如下: @echo off set str=123456789 rem 定义一个 str 字符串为 123456789 echo 第一个字符为:%str:~0,1% rem 指针为 0, 偏移地址为 1, 即从第 0 位开始, 取 1 位 echo 头两个字符为:%str:~0,2% rem 指针为 0, 偏移地址为 2, 即从第 0 位开始, 取 2 位 echo 头 5 个字符为:%str:~0,5% rem 指针为 0, 偏移地址为 5, 即从第 0 位开始, 取 5 位 echo 去掉最后一个字符后的字符串为:%str:~0,-1% rem 当 "k" 为负值时, 我们可以这样理解: 从指针开始处开始取其后面所有字符, 然后减去 后面 "abs(k) 位".. 所以这个句字我们可以做如下解释: 从第 0 位开始取其全部字符 为: 123456789 然后从后面减去 abs(k) 位, 所以最后结果为: 12345678 echo 去掉最后 3 个字符后的字符串为:%str:~0,-3% rem 该句解释同上↑ echo 最后一个字符为:%str:~-1% rem 参数 "n," 和 "k" 都可以为缺省, 缺省 "n," 时可以理解为: 从 abs(k) 位开始取其全部 echo 倒数第 4 个及其之后的字符为:%str:~-4% rem 解释同上↑ echo 最后一个字符为:%str:~-1,1% rem n 为负值时, 表示从后面开始截取字符, 取 k 位 (此时 n 应从 1 开始数) echo 最后一个字符为:%str:~-1,2% rem 解释同上↑ echo 倒数第 4 个字符为:%str:~-4,1% rem 解释同上↑ echo 倒数第 4 个及其之后的 1 个字符为:%str:~-4,2% rem 解释同上↑ echo 倒数第 4 个及其之后的 2 个字符为:%str:~-4,3% rem 解释同上↑ pause |
|