批处理窗口的变量和条件

批处理窗口的变量和条件

我想做一批。

目标很简单:

对于所有带有 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

相关内容