Untuk satu CMD
sesi saya dapat dengan mudah menetapkan jalur baru:SET PATH=%PATH%;"insert custom path here"
Melakukannya dalam file batch tidak mempertimbangkan apakah jalur kustom sudah termasuk. Bagaimana cara menghindari menduplikasi (yaitu memeriksa apakah sudah terkandung dalam "string" PATH).
Catatan:
- Terkait: Bagaimana cara menambahkan variabel lingkungan yang ditentukan pengguna ke variabel sistem PATH di Windows 7?
- Terkait: Bagaimana saya bisa menambahkan entri secara permanen ke variabel PATH sistem, melalui baris perintah?
- Pertanyaan yang sama untuk UNIX: Tambahkan direktori ke $ PATH jika belum ada di sana
- Beberapa ops String "CMD" menjelaskan: http://ss64.com/nt/syntax-replace.html
windows
command-line
path
Horst Walter
sumber
sumber
Jawaban:
Mirip dengan jawaban MaddHackers, hanya lebih kompak.
echo %path%|find /i "%np%">nul || set path=%path%;%np%
%np%
adalah jalur baru Anda, tentu saja Anda dapat menggunakan literal sebagai gantinya. Kegunaan:echo %path%|find /i "%np%">nul
mencari jalur yang ada untuk sebuah string, membuang output.||
berarti mengeksekusi pada kegagalan, jadi itu berarti: Cari jalur untuk string yang akan ditambahkan, dan jika tidak ditemukan, tambahkan.Sunting: Umumnya tidak diperlukan untuk mengutip lintasan, bahkan yang berisi spasi, tetapi jika Anda ingin mengutipnya , versi ini akan bekerja dengan lintasan yang dikutip ganda:
echo %path%|find /i "%np:"=%">nul || set path=%path%;%np%
Sunting: diubah
findstr /i /c:
menjadifind /i
karenafindstr
dapat salah menafsirkan beberapa urutan seperti yang dicatat oleh KubaOber dalam komentarsumber
%np%
memuat tanda kutip - ya, itu akan menyebabkannya melakukan kesalahan.echo %path%|findstr /i /c:"my path">nul || set path=%path%;"my path"
) akan berfungsi dengan baik.echo d\. | findstr /c:"d\."
gagal, tetapiecho d\. | find "d\."
berhasilSaya tahu ini kotor, tetapi ini seharusnya berhasil:
di mana
%checkstr%
string untuk memeriksa dalam PATH dan%newpath%
merupakan PATH baru untuk menambahkan ke PATH saat iniSemoga itu bisa membantu, dan saya yakin ada cara yang lebih mudah, tetapi itu seharusnya bisa membantu untuk saat ini.
EDIT
Jadi jika Anda tidak ingin menambahkan alat UNIX ke Windows, Anda dapat mencoba sintaks kumpulan ini:
Ugh, bukan lebih cantik, dan dapat dilakukan sebagai satu baris jika Anda bisa mendapatkan perintah find pipe'ed untuk bekerja sebagai sub-perintah dalam pernyataan if ...
sumber
Skrip berdasarkan jawaban oleh "wmz":
sumber