Dla jednej CMD
sesji mogę łatwo ustawić nową ścieżkę:SET PATH=%PATH%;"insert custom path here"
Robiąc to w pliku wsadowym, nie uwzględnia się, czy ścieżka niestandardowa jest już uwzględniona. Jak uniknąć powielania go (tzn. Sprawdź, czy jest już zawarty w „ciągu” ŚCIEŻKI).
Uwagi:
- Powiązane: Jak dołączyć zmienne środowiskowe zdefiniowane przez użytkownika do zmiennej systemowej PATH w systemie Windows 7?
- Powiązane: Jak mogę na stałe dodać wpis do zmiennej PATH systemu, za pomocą wiersza poleceń?
- To samo pytanie dla UNIX: Dodaj katalog do $ PATH, jeśli jeszcze go nie ma
- Wyjaśnienie niektórych ciągów znaków „CMD”: http://ss64.com/nt/syntax-replace.html
windows
command-line
path
Horst Walter
źródło
źródło
Odpowiedzi:
Podobne do odpowiedzi MaddHackers, tylko bardziej kompaktowe.
echo %path%|find /i "%np%">nul || set path=%path%;%np%
%np%
to twoja nowa ścieżka, oczywiście możesz zamiast tego używać literałów. Co robi:echo %path%|find /i "%np%">nul
przeszukuje istniejącą ścieżkę w poszukiwaniu ciągu, odrzucając dane wyjściowe.||
oznacza wykonanie w przypadku niepowodzenia, więc oznacza: Wyszukaj ścieżkę do dodania ciągu, a jeśli nie zostanie znaleziony, dodaj go.Edycja: Generalnie nie jest wymagane cytowanie ścieżek, nawet tych zawierających spacje, ale jeśli chcesz je cytować , ta wersja będzie działać ze ścieżkami podwójnie cytowanymi:
echo %path%|find /i "%np:"=%">nul || set path=%path%;%np%
Edycja: zmieniono
findstr /i /c:
na,find /i
ponieważfindstr
może źle interpretować niektóre sekwencje, jak zauważył KubaOber w komentarzachźródło
%np%
zawierasz cytaty - tak, spowoduje to nieprawidłowe zachowanie.echo %path%|findstr /i /c:"my path">nul || set path=%path%;"my path"
) powinno działać poprawnie.echo d\. | findstr /c:"d\."
kończy się niepowodzeniem, ale sięecho d\. | find "d\."
udajeWiem, że jest brudny, ale to powinno działać:
gdzie
%checkstr%
jest ciągiem do sprawdzenia w ŚCIEŻCE i%newpath%
jest nową ŚCIEŻKĄ dołączaną do bieżącej ŚCIEŻKIMam nadzieję, że to pomaga i jestem pewien, że istnieje łatwiejszy sposób, ale na razie powinno wystarczyć.
EDYTOWAĆ
Jeśli więc nie chcesz dodawać narzędzi systemu UNIX do systemu Windows, możesz wypróbować następującą składnię:
Ugh, nie ładniejszy, i można to zrobić w jednym wierszu, jeśli można znaleźć polecenie find potoku, aby działało jako podkomenda w instrukcji if ...
źródło
Skrypt oparty na odpowiedzi „wmz”:
źródło