Jestem nowy w pisaniu scenariuszy i nie mogę zmusić tego do pracy. Mógłbym, gdybym przeniósł pliki na ścieżkę bez spacji, ale chciałbym, aby działała z przestrzenią, jeśli to możliwe.
Chcę wyodrębnić kilka aktualizacji pakietu Office do folderu z plikiem cmd. Aby plik wsadowy działał na dowolnym komputerze, ustawiłem zmienną ścieżki, którą muszę zmienić tylko w jednym miejscu, aby uruchomić go na innym komputerze. Problem w tym, że ścieżka ma w sobie przestrzeń. Jeśli umieszczę cudzysłowy wokół ścieżki w definicji, cmd.exe umieści je wokół ścieżki przed dołączeniem nazwy pliku i przełączników, a partia zakończy się niepowodzeniem z komunikatem „Błąd składni wiersza polecenia”. Bez cudzysłowów kończy się niepowodzeniem, „nie jest rozpoznawany jako polecenie wewnętrzne lub zewnętrzne, program operacyjny lub plik wsadowy”.
Do testowania używam przełącznika pomocy do czasu, gdy mogę go uruchomić. Mogę to zrobić używając nazwy pliku / folderu 8.3 (np. My Documents as MyDocu ~ 1), ale czy można to zrobić w inny sposób?
Odpowiedzi:
Spróbuj czegoś takiego:
źródło
używam
podczas aktualizacji ścieżki:
źródło
Istnieją dwie opcje. Najpierw możesz zapisać ścieżkę bez cudzysłowu i po prostu zacytować ją później:
Inną opcją, której możesz użyć, jest podprogram, który sprzyja usuwaniu cytatów z ciągów znaków (ale w tym przypadku nie jest to w rzeczywistości dobry pomysł, ponieważ dodajesz cudzysłowy, usuwasz je i dodajesz ponownie bez korzyści):
%~1
Usuwa cudzysłowy wokół argumentu. Przydaje się to przy przekazywaniu nazw folderów w cudzysłowie, ale, jak powiedziano wcześniej, w tym przypadku nie jest to najlepszy pomysł :-)źródło
set LALA=%~1
mnie działało używanie .Spróbuj tego;
utwórz zmienną jak poniżej
Następnie zamień ścieżkę na zmienną. Pamiętaj, aby dodać cudzysłowy na początek i koniec
źródło
Kiedy tworzę plik .bat, zawsze umieszczam ścieżkę w podwójnych cudzysłowach. (Właśnie dodałem PAUSE, więc nie zamyka ekranu.)
Na przykład:
źródło
Właściwy sposób na zrobienie tego jest następujący:
źródło
Najłatwiejszym sposobem rozwiązania tego problemu jest umieszczenie nazwy folderu w cudzysłowie:
(cd\New Folder\...) --> (cd\"New Folder"\...)
Mam nadzieję, że to pomoże.
źródło
Jeśli chcesz zapisać stałą ścieżkę (ścieżka nie jest zmieniana po ponownym uruchomieniu cmd)
Uruchom wiersz polecenia jako administrator (kliknij prawym przyciskiem myszy cmd.exe i wybierz Uruchom jako administrator)
W cmd
setx path "%path%;your new path"
wpiszSprawdź, czy ścieżka jest poprawnie wybrana, wpisując ścieżkę i naciskając klawisz Enter
źródło
po prostu spróbuj dodać podwójne ukośniki, tak jak to działa tylko dla mnie
set dir = "C: \\ 1. Some Folder \\ Some Other Folder \\ Just because"
@echo w MKDIR% dir%
OMG po opublikowaniu usunęli drugi \ w moim poście, więc jeśli otworzysz mój komentarz i pokazuje on trzy, powinieneś je przeczytać jako dwa ......
źródło