2012-10-10 11 views
6

Ben bir unix adamım ama pencerelerde bir sistem yazmak zorundayım ve bazı dosyaları taşımak için bir komut dosyası yazmaya çalışıyorum.Unix'te yapabildiğiniz gibi bir cmch dosyasını cmd olarak yazmak mümkün mü?

set REPORTFILE=c:\report.txt 

ve sonra üst% REPORTFILE% değişkeni kullanabilmek için istiyorum: Ben ebeveyn toplu iş dosyası içeren bir çocuk toplu dosyası ARAYIN yaşamaya çalışıyorum. Görünüşe göre CALL komutu yeni bir bağlam yaratıyor. Unix'te, senaryonun kaynağını çiziyorsun, pencerelerde bu mümkün mü? \ Temp> Arayan

:

echo this is the caller 
echo initial value is: %reportfile% 
call setter.bat 
echo value is: %reportfile% 

echo this is the value setter 
set reportfile=c:\report.txt 

C

setter.bat

caller.bat:
+1

Sanırım REPORTFILE = 'cat filewithname.txt' unix gibi bazı hileler yapabilirim. (bunların backtick olduğuna inanıyorum) Pencerelerde bunun bir karşılığı var mı? – stu

+0

ahhhh ... bu mu? set/p REPORTFILE = stu

+1

ÇAĞRI, çağrılan komut dosyası/rutin SETLOCAL hatası olmadıkça yeni bir bağlam oluşturmaz. Başarısız olduğunu düşündüğünüz tam bir örnek (ana ve çocuk) göstermelisiniz. Geciken genişlemeyi gerektirecek parantez içinde değeri çağırarak ve ayarlayacağınızdan şüpheleniyorum. – dbenham

cevap

8

i anlamak eğer

... Bu Vista'da benim için iş gibi görünüyor

C: \ temp> echo bu, arayan kişi

bu arayanın

C: \ sıcaklık> başlangıç ​​değeridir yankı:

başlangıç ​​değeridir:

C: \ sıcaklık>: \ sıcaklık> çağrı Cı

setter.bat Bu değer ayarlayıcı

yankı bu değer ayarlayıcı

C: \ sıcaklık> = c reportfile set:

rapor.txt \

C: \ sıcaklık> yankı değerdir: C: \ rapor.txt

değerdir: C: \ rapor.txt

Pars yerine Goto kullanımı güncelleme: Şimdi

if not exist file.txt goto doit 
goto notfound 
:doit 
echo this is the caller 
echo initial value is: %reportfile% 
call setter.bat 
echo value is: %reportfile% 
goto end 
:notfound 
echo file found 
:end 
+0

Evet, bu bana XP'de çalışmıyor. Bu komut dosyasını çalıştırır ve rapor dosyasını ayarlarsanız ne alırsınız? Değişkenin çağrı bağlamımda ayarlandığını ancak komut dosyasında bulunmadığını buldum. c: \ rapor.txt ... benim için – stu

+0

reportfile = c \> Benimkini biraz daha karmaşık oldu, senin durumun çalışma bkz – Stanley

+0

deneyin "reportfile set" sonra: – Stanley

İlgili konular