Toplu iş döngüsünün içinde bir dize birleştirilemiyor


2

Bir süredir bununla mücadele ediyorum ve nedenini çözemiyorum.

Bu toplu iş dosyasına sahibim:

@echo on    
setlocal enabledelayedexpansion

for /F %%x in (FileList.txt) do (
    for /L %%i in (1,1,16) do (
        if %%i LSS 10 (set ctr=0%%i) else (set ctr=%%i)
        echo !ctr!
        set target = \\Server-!ctr! password /user:domain\username
        echo %target%
        echo net use z: %target%
        echo copy %%x "z:%%~pnx" /Y
        echo net use z: /delete
    )
)

Ctr değişkenim uygun şekilde ayarlanmış, ancak birleştirmeyi denediğimde, tek elde ettiğim şey: \ Server-! Ctr! parola / kullanıcı: domain \ username. Değerini değil, sadece değişmez karakterleri döndürmek için%! Ctr!%,% Ctr%, %% ctr, %% ctr %% öğelerini denedim. Yeterince, set komutunu aldığımda yankı! Ctr! değeri döndürür. Ayrıca set parametrelerini tırnak işaretleri içine almayı da denedim - aynı sonuçlarla, sadece tırnak içine alın.

Neyi kaçırıyorum?

Yanıtlar:


0

Neyi kaçırıyorum

setKomutu doğru kullanmıyorsunuz .

set target = \\Server-!ctr! password /user:domain\username

Bu, "target" adında bir değişken oluşturur (addan sonra kalan boşluğu not alın).

Ek olarak, ifadenin sağ tarafı boşluklar içerdiğinden, bazı alıntılara da ihtiyacınız vardır.

Değişken adı veya dizginin etrafındaki herhangi bir fazladan boşluk yoksayılmayacak, SET birçok diğer betik dili gibi fazladan boşluklar bağışlamayacaktır.

Kaynak seti

Aşağıdaki değişimi deneyin:

set target="\\Server-!ctr! password /user:domain\username"

Ayrıca gecikmeli genişlemeyi doğru bir şekilde kullanmıyorsunuzdur.

echo %target%
echo net use z: %target%

Gecikmeli Genişleme, değişkenlerin ayrıştırma zamanı yerine yürütme sırasında genişletilmesine neden olur.

Kaynak etkinleştirilmiş genişleme

Bu olmalı:

echo !target!
echo net use z: !target!

Daha fazla okuma

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.