2011-07-21 25 views
29

Obecnie piszę plik wsadowy, który wykonuje plik instalacyjny. Przed uruchomieniem pliku instalacyjnego sprawdzam, czy istnieje katalog, aby uniknąć ponownej instalacji aplikacji.Jeśli nie istnieje - polecenie CMD - nie działa

Robię to za pomocą oświadczenia If Not Exists filename. Jeśli zainstalowany plik nie istnieje, wówczas wykonuję plik instalacyjny.

Z jakiegoś powodu, gdy testuję go w aplikacji, w której został już zainstalowany, nadal próbuje ponownie zainstalować aplikację.

Oto fragment mojego kodu:

cd "C:\Documents and Settings\John\Start Menu\Programs\" 
pause 
If NOT exist "Software Folder"\ (
start \\filer\repo\lab\"software"\"myapp"\setup.exe 
pause 
) 

SoftwareFolder Gdzie jest podkatalog "C:\Documents and Settings\John\Start Menu\Programs\". ja sprawdzając, czy istnieje w moim folderze Programs.

Wiem, że nic nie jest nie tak z moją komendą start. Mam wrażenie, że coś jest nie tak z moją komendą CD lub jej parametrami.

Wielkie dzięki!

Odpowiedz

39

Użyj ścieżki FULL do folderu w swoim kodzie If not Exist. Wtedy nie będzie nawet musiał już CD:

If Not Exist "C:\Documents and Settings\John\Start Menu\Programs\SoftWareFolder\" 
+0

próbowałem, ale to też nie działa. – Johnrad

+1

Próbowałem tego również i to nie działało.Ale kiedy zrobiłem Jeśli nie istnieje C: \ "Dokumenty i ustawienia" \ John \ "Menu Start" \ Programy \ "Folder SoftWare" \ – Johnrad

+0

To zadziałało! Więc dziękuję :) – Johnrad

3

zauważyłem pewne problemy z tym, że może być przydatne dla kogoś dopiero zaczynasz, lub nieco niedoświadczony użytkownik, aby wiedzieć. Po pierwsze ...

CD /D "C:\Documents and Settings\%username%\Start Menu\Programs\" 

dwie rzeczy jest to, że a/D po CD może okazać się przydatna w upewniając się, że katalog jest zmieniony, ale to naprawdę nie jest to konieczne, po drugie, jeśli masz zamiar przekazać to z użytkownik do użytkownika, zamiast kodu, należy dodać kod% username%, dzięki czemu kod można wykorzystać na dowolnym komputerze, o ile plik setup.exe znajduje się w tym samym miejscu co na komputerze. oczywiście upewnienie się, że jest to trudniejsze. również ...

start \\filer\repo\lab\"software"\"myapp"\setup.exe 

kod Kliknij tutaj, można skonfigurować tak, ale poprawna składnia jest

start "\\filter\repo\lab\software\myapp\" setup.exe 

Pozwoli to uruchomić: setup.exe, znajduje się w: \ filtra \ repo \ lab ... itp. \

0

Podobnie jak w przypadku Escobara Ceaser, proponuję użyć cytatów na całej ścieżce. Jest to powszechny sposób na zawinięcie całej ścieżki w "", a nie tylko oddzielnych nazw katalogów w ścieżce.

Miałem podobny problem, który nie zadziałał u mnie. Ale nie było możliwości użycia "" w ścieżce dla oddzielnych nazw katalogów, ponieważ ścieżka zawierała zmienne środowiskowe, które same obejmują więcej niż jedną hierarchię katalogów. W konkluzji stwierdzono, że brakowało mi przestrzeń pomiędzy zamknięciem "i (

poprawnej wersji, z przestrzeni przed nawiasem, byłoby

If NOT exist "C:\Documents and Settings\John\Start Menu\Programs\Software Folder" (
start "\\filer\repo\lab\software\myapp\setup.exe" 
pause 
)