Bir Windows ortam değişkeni bir toplu iş değişkenine atama?


0

Bir toplu iş komut dosyasındaki bir ortam değişkenine başka bir tane atayamıyor gibiyim.

Örneğin, bu işe yarayacak:

set varA=C:\this\is\a\directory

ve mutlu bir şekilde kullanabilirim

find /I "MyString" %varA%

olay olmadan. Ancak, bu şekilde atamaya çalışırsam,

varA=%ENVVAR%\more\dirs

Parti, durdurulana kadar CMD penceresine yapışıyor.

Hala Windows’un iğrenç benzersiz komut dosyasını öğrenme sürecindeyim , bu yüzden yalnızca bir değişkeni başka bir değişkene atamak için uygun olduğunu söyleyebilirim.

Yanıtlar:


1

Değişkenleri toplu halde ayarlamak için dikkatli olmanız gereken tek şey gereksiz yere boşluk kullanmamaktır. (Sorunuzda bunu görmüyorum, ancak sorununuzu giderirken kendimi yaparken yakaladığımdan beri aramak istedim.) Örneğin:

set x=123

aynı değil

set x = 123

Eski koyacaktır %x%için 123ikinci set ise, %x %hiç 123. ( xDeğişken adından sonra 123ve tanımdan önce bir tane boşluk bırakınız.)

Farkında olmak başka bir şey sadece söyleyemezsiniz var=value. Bir ortam değişkeni ayarlamak için komutu kullanmanız gerekirSET .

Dolayısıyla, yolu içeren ve ardından bu yolu genişleten bir ortam değişkenini ayarlamak için uygun sözdizimi şöyledir:

set x=C:\This\is\a\directory
set y=%x%\more\dirs

Daha sonra SETbu değişkenlerin içeriğini doğrulamak için komutu kullanabilirsiniz .

görüntü tanımını buraya girin

Yalnızca Windows'ta komut dosyası dilleri öğreniyorsanız, toplu atlamayı atlamanız ve doğrudan PowerShell'e atlamanız daha yararlı olacaktır. PowerShell, Windows Vista ve üzeri sürümlerde standart olarak gelir ve XP için de kullanılabilir. İşte PowerShell'de aynı işin nasıl yapılacağı.

$x='C:\This\is\a\directory'
$y="$x\more dirs"

(Not: Ayar $ysırasında çift ​​tırnakların kullanılmasının bir nedeni vardır , tekli tırnaklar kullanılırken $x. Bu durumda, ayar yapmak için de kullanabilirdik, $xancak $ydeğişkenleri genişletmemiz gerektiğinden, ayarlama için çift tırnak kullanmak zorunluydu . dili alırken bu konuda daha fazla şey öğreneceğim.)

Ardından, değişkenleri doğrulamak için doğrudan doğrudan arayabilirsiniz.

görüntü tanımını buraya girin

PowerShell ayrıca çoğu durumda aralıklara karşı çok daha az hassastır.

$x=123

aynıdır

$x = 123

Bu tam olarak cevaplamıyor, ancak tamamen yanlış (varolmayan) bir dizin belirttiğim ortaya çıktı. % APPDATA% 'ı o kadar sık ​​kullanıyorum ki, asıl klasör yerine Dolaşım'ı işaret ettiğini unuttum.
Sclarki

@ SacredCrumb Ah, o zaman bu bir XY Problemi haline gelir . Bir dahaki sefere, kırıldığını düşündüğünüz şey için genel bir dava vermek yerine, aslında yapmaya çalıştığınız şeyin gerçek ayrıntılarını verin .
Iszi
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.