Я хотел бы сделать партию.

Цель проста:

Для всех файлов с DSW xtension

Если мое имя файла содержит 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 ответ1

0

Ваша цель хорошо сформулирована, так почему бы вам не преобразовать ее в пакетные команды?

@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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .