2012-10-10 10 views
6

Jestem facetem unix, ale muszę napisać system w systemie Windows i próbuję napisać skrypt, aby przenieść niektóre pliki wokół. Staram się mieć plik wsadowy rodzic CALL plik wsadowy dziecięcej, który zawiera:Czy jest możliwe, aby źródło pliku wsadowego w systemie Windows cmd, jak można w systemie Unix?

set REPORTFILE=c:\report.txt 

a potem chcę rodzic, aby móc użyć% zmienna% REPORTFILE. Najwyraźniej polecenie CALL tworzy nowy kontekst. W systemie Unix, po prostu źródło skryptu, jest to możliwe w systemie Windows?

+1

teraz Myślę, że mogę zrobić jakąś sztuczkę jak w UNIX REPORTFILE = 'cat filewithname.txt'. (wierzcie, że to są backticks) Czy istnieje odpowiednik tego w oknach? – stu

+0

ahhhh ... czy to jest to? set/p REPORTFILE = stu

+1

CALL nie tworzy nowego kontekstu, chyba że wywoływany skrypt/procedura wydaje SETLOCAL. Powinieneś pokazać pełny przykład (master i child), który Twoim zdaniem zawodzi. Podejrzewam, że możesz wywoływać i ustawiać wartość w nawiasach, co wymagałoby opóźnionego rozszerzenia. – dbenham

Odpowiedz

8

jeśli rozumiem ... to wydaje się działać dla mnie w Vista:

caller.bat

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

setter.bat

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

C: \ temp> rozmówca

C: \ temp> echo to jest wywołujący

jest rozmówca

C: \ temp> echo jest wartość początkowa:

wartością początkową:

C: \ temp> Połączenie setter.bat

C: \ temp> Echo to wartość ustawiająca

jest to wartość sETTER

C: \ temp> set reportfile = c: \ report.txt

C: \ temp> wartość echo c: \ report.txt

wartość c: \ report.txt

zaktualizowana i goto zamiast parens:

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

Tak, to nie działa dla mnie w XP. Jeśli uruchomisz ten skrypt, a następnie ustawisz plik raportu, co otrzymasz? Odkryłem, że zmienna została ustawiona w kontekście wywoływania, ale nie w skrypcie. – stu

+0

reportfile = c: \ report.txt ... po "ustaw plik raportu" dla mnie – Stanley

+0

spróbuj: c: \> zadzwoń zadzwoń.bat – Stanley

Powiązane problemy