Toplu Windows ile Değişken ve Koşullar


0

Bir parti yapmak istiyorum.

Amaç basit:

DSW xtension ile tüm dosyalar için

Eğer dosyamın adı VU1 ise, değişken1 = 2 ve değişken2 = 2
Eğer dosyamın adı VU2 ise, değişken1 = 20 ve değişken2 = 30

Son

Denerim :

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 
)

Değişkenimi echo yaptığımda, sahip oldum: echo null.

Bir şey yanlış.


ne elde etmeye çalışıyorsanız @echo off set variable1=2 , komut satırı var echo off ve echo abcdefg whatever abcdefg başlamadan önce @ echo'yu kapatmak isteyebileceğiniz komut satırı var echo set variable1=2 . Belki de toplu iş dosyasını çalıştırmadan önce hangi dosyalara sahip olduğunuzu gösterebilirsiniz. Ayrıca çevre değişkenlerinizi de nasıl kontrol ettiğinizi gösterebilirsiniz.
barlop

böyle bir şey deneyin@echo off {NEW LINE} FOR %%f IN (*VU1*.dsw) DO ( {NEW LINE} set variable1=2 {NEW LINE} )
barlop

Arızamı kesin. Ama şimdi sadece VU2 için çalışıyor,
Pru-Yauou

'Yankı'yı kaldırmanızı ve bunun size herhangi bir ipucu verip vermediğini görmenizi öneririm. Ve sadece başarısız olursa VU2'yi yapan bir toplu iş dosyasını deneyin, o zaman bunu düzeltmeye çalışın, bunu düzelttikten sonra nerede yanlış yaptığınızı bileceksiniz ve düzeltebilirsiniz
barlop

Yanıtlar:


0

Hedefiniz iyi formüle edildi, peki neden onu toplu komutlara dönüştürmüyorsunuz ?

@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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.