批处理变量,扩展,及变量截取

for /? 能看到的比下面详细

获取文件夹的名字

for /f "delims=" %%i in ("%cd%") do set folder=%%~ni 
for /f "delims=" %%a in ("%CD%") do set CURR=%%a 

1 变量

%0 %1 %2:  参数 类似于argv

%i   :直接在命令行for的时候 用这个

%%i :脚本里for循环用这个

%var% : set完了用这个

 !var!  延迟环境变量扩展 setlocal enabledelayedexpansion 时用这个

2 复制for /?中的

FOR 变量参照的替换已被增强。你现在可以使用下列
选项语法:

%~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 的大写变量名
比较易读,而且避免与不分大小写的组合键混淆。

3 字符串相关操作

https://www.tutorialspoint.com/batch_script/batch_script_strings.htm

替换:

Example
@echo off 
set str=This message needs changed. 
echo %str% 

set str=%str:needs=has% 
echo %str%
The key thing to note about the above program is, the example replaces the word ‘needs’ with the string ‘has’ via the statement %str:needs = has%

Output
The above command produces the following output.

This message needs changed. 
This message has changed.
原文地址:https://www.cnblogs.com/wolbo/p/12909231.html