Komutumun çalışmasını sağlamada herhangi bir şans olmadan etrafı araştırdım. Oldukça yakın olduğumu hissediyorum, ama biraz yardıma ihtiyacım var. Ben "srcdir" (betiğimin başında belirledikten sonra) yinelemeli olarak taramak için bir FOR döngüsünü kullanmaya çalışıyorum, daha sonra döngü dosyaları/yolları (%% f) döndürdüğünde, dosya yolunun bir kısmını başka bir şeyle değiştirebilirim. (örneğin; C: \ rootpath \ des için C: \ rootpath \ src).Döngü ve değişken ikamesi için toplu olarak dosya yolunu bölme
Ben bu gibi bir komut dosyası kullanarak sadece böyle bir şey yapmak mümkün duyuyorum: bu zor kılan Ancak
set subdir=C:\rootpath\src
set subdir=%subdir:src=des%
echo %subdir%
, benim "SRCDIRın" kök yolu değişebilir olmasıdır (örneğin; C : "rocpath" ve "srcdir" ifadesi değiştikten sonra her şey değişebilir (örneğin, C: \ rootpath \ src klasöründe "src"). Tek sabit yolu klasör src ve klasör des (yığın dosyamı çalıştırdığım aynı dizinde bulunur).
Yani, önceki örnekte aynı tekniği kullanarak, "srcdir" (%% f) içindeki dosyaların tam yolunu yinelemeli olarak bulmak için bir FOR döngüsünü kullanmak ve "src" klasörünü kullanarak yol dizesinde "des" klasörü. Bu nedenle, "%% f" yi bir değişken (subdir) olarak ayarlamaya ve değişken değiştirme kullanarak klasörleri değiştirmeye çalışıyorum. Herhangi bir yardım büyük takdir
set srcdir=C:\rootpath\src
for /r "%srcdir%" %%f in (*.txt) do (
set subdir=%%f
set subdir=%subdir:src=des%
echo %subdir%
)
:
İşte benim şimdiki olmayan çalışma script! Teşekkürler! Eğer atama ve for
döngü gibi bir kod bloğu içindeki değişkenler okuduğunuz beri
[for' döngüsü] – aschipfl
gibi bir kod bloğu içindeki değişkenleri ayarlayıp okuduğunuz anda [gecikmeli genişletme] (http://ss64.com/nt/delayedexpansion.html) gerekir. for döngüsü başlatılmadan önce 'Setlocal EnableDelayedExpansion' kullanılmalıdır? –
Evet, bunu sağlar; Bunu kullanmak için, '% variable%' yerine '! variable! 'gibi değişkenleri genişletmeniz gerekir; Bu aynı zamanda alt-string ikame sözdizimi için de geçerlidir ... – aschipfl