バッチウィンドウでの変数と条件


0

バッチを作りたいのですが。

目標は簡単です。

DSW xtensionを持つすべてのファイルに対して

私のファイル名にVU1が含まれている場合、variable1 = 2およびvariable2 = 2
私のファイル名にVU2が含まれていればvariable1 = 20とvariable2 = 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になります。

何かが間違っている。


何を達成しようとしていますか @echo off set variable1=2 コマンドラインがあります echo off そしてコマンドラインがあります echo abcdefg whatever abcdefg あなたはそれから始める前に@echoをオフにしたいかもしれません echo set variable1=2 echoは表示されるだけなので、コードには変数を設定しません。おそらく、バッチファイルを実行する前に、どのファイルがあるのか​​を示すことができます。また、環境変数をどのようにチェックするのかを示すこともできます。
barlop

こんな感じで @echo off {NEW LINE} FOR %%f IN (*VU1*.dsw) DO ( {NEW LINE} set variable1=2 {NEW LINE} )
barlop

私のせいしかし今ではそれはVU2のためにだけ働きます、
Pru-Yauou

'echo off'を取り除き、それが手掛かりを与えるかどうかを確認することをお勧めします。そしてそれが失敗した場合にのみVU2を実行するバッチファイルを試してみて、それを修正してみてください。
barlop

回答:


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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.