for /f delims=以双引号作为分隔符+以斜杠/作为分隔符

参考:https://blog.csdn.net/weixin_43515150/article/details/98735861

背景:我要获取文件中的版本号来定义我的exe的名字

文件pc.h内容如下:

     // 业务层版本信息
     #define VERSION_MAIN "4.05.06"
    // 组件层版本信息
    #define SCREEN_CAPTURE "3.01.02"
    #define ENC_HW "3.01.02"

我要获取 #define VERSION_MAIN "4.05.06"中的4.05.06,在delims=后连续写上你的分隔符,空格必须放最后,分隔符有双引号的话,表达式"delims=tokens="就得去掉前后的双引号

写成delims= tokens=,而该表达式中的所有符号都要转义。

脚本如下:

more pc.h | findstr "VERSION_MAIN" >my_version
more my_version
for /f tokens^=2^ delims^=^" %%m in ( my_version ) do ( set my_v=%%m)    表示以双引号划分,取第二列
echo version=!my_v!

另外:

以斜杠作为分隔符,将斜杠转义就可以了,如下:(取文件中斜杠分隔符的第一列)

for /f "tokens=1 delims=^/" %%x in (old_path) do ( set old_head=%%x)
for /f "tokens=1 delims=^/" %%y in (new_path) do ( set new_head=%%y)
echo =====old_head=!old_head!,new_head=!new_head!===========
if not "!old_head!" == "!new_head!" (
echo old_head=!old_head! is not equal new_head=!new_head!
exit 1
)

原文地址:https://www.cnblogs.com/zndxall/p/13938092.html