我想做一批。
目标很简单:
对于所有带有 DSW 扩展名的文件
如果我的文件名包含 VU1,那么变量 1=2 且变量 2=2
如果我的文件名包含 VU2,那么变量 1=20 且变量 2=30
结尾
我尝试:
FOR %%f IN (*VU1*.dsw) DO (
@echo off set variable1=2
@echo off set variable2=2
)
FOR %%f IN (*VU2*.dsw) DO (
@echo off set variable1=20
@echo off set variable2=30
)
当我回显我的变量时,我得到:echo null。
有点不对劲。
答案1
你的目标已经很明确了,那么为什么不把它变成批处理命令?
@ECHO OFF >NUL
@SETLOCAL enableextensions enabledelayedexpansion
rem For all files with DSW xtension
FOR %%f IN (*VU*.dsw) DO (
rem get my filename: no path, no file extension
set "filename=%%~nf"
rem initialize variables
set "variable1=var1"
set "variable2=var2"
rem If my filename contains VU1 so variable1=2 and variable2=2
If not "!filename:VU1=!"=="!filename!" (
set "variable1=2"
set "variable2=2"
)
rem If my filename contains VU2 so variable1=20 and variable2=30
If not "!filename:VU2=!"=="!filename!" (
set "variable1=20"
set "variable2=30"
)
rem display result
echo %%f "!filename!" !variable1! !variable2!
)
rem end
ENDLOCAL
goto :eof