Saya ingin tahu apa saja pendekatan yang Anda gunakan untuk mengelola executable di sistem Anda. Misalnya saya memiliki hampir semua yang dapat diakses melalui baris perintah, tetapi sekarang saya sampai pada batas string jalur, jadi saya tidak dapat menambahkan dir lagi.
Jadi apa yang Anda rekomendasikan? Dahulu kala, saya mencoba menggunakan softLink dari executable di Dir yang termasuk dalam jalur, tetapi pendekatan itu tidak berhasil. Lempar "hanya dapat dieksekusi" ke Dir yang dikenal, memiliki masalah yang hampir semua aplikasi memerlukan satu set file, jadi ini juga buruk. Buang file yang dapat dieksekusi dan semua file-nya ke Dir yang dikenal, mmm ini akan berhasil, tetapi kemungkinan untuk mendapatkan konflik dalam nama file sangat tinggi. Buat HardLink? saya tidak tahu Bagaimana menurut anda?
Jawaban:
Salah satu cara yang bisa saya pikirkan adalah menggunakan variabel lingkungan lain untuk menyimpan jalur parsial; misalnya, jika Anda punya
maka Anda dapat membuat variabel lingkungan baru seperti
setelah itu jalan awal Anda menjadi
EDIT: Pilihan lain adalah membuat
bin
direktori yang menyimpan.bat
file yang mengarah ke.exe
file yang sesuai .EDIT 2: Komentar Ben Voigt untuk jawaban lain menyebutkan bahwa menggunakan variabel lingkungan lain seperti yang disarankan mungkin tidak mengurangi panjangnya
%PATH%
karena mereka akan diperluas sebelum disimpan. Ini mungkin benar dan saya belum mengujinya. Pilihan lain adalah menggunakan formulir 8dot3 untuk nama direktori yang lebih panjang, misalnyaC:\Program Files
biasanya sama denganC:\PROGRA~1
. Anda dapat menggunakandir /x
untuk melihat nama yang lebih pendek.EDIT 3: Tes sederhana ini membuat saya percaya Ben Voigt benar.
Di akhir ini, Anda akan melihat keluaran
hellohello
daripadabyehello
.EDIT 4: Jika Anda memutuskan untuk menggunakan file batch untuk menghilangkan jalur tertentu dari
%PATH%
, Anda mungkin khawatir tentang cara menyampaikan argumen dari file batch Anda ke file yang dapat dieksekusi sehingga prosesnya transparan (yaitu, Anda tidak akan melihat perbedaan apa pun antara memanggil file batch dan memanggil executable). Saya tidak memiliki banyak pengalaman menulis file batch, tetapi ini tampaknya berfungsi dengan baik.Sebagai aturan umum, Anda harus berhati-hati dalam menjalankan file batch dari internet, karena Anda dapat melakukan segala macam hal dengan file batch seperti memformat hard drive Anda. Jika Anda tidak mempercayai kode di atas (yang saya tulis), Anda dapat mengujinya dengan mengganti baris
dengan
Idealnya Anda harus tahu persis apa yang dilakukan setiap baris sebelum Anda menjalankannya.
sumber
cmd
, perhatikan bahwa Anda dapat menggunakan*
untuk menyimpan pengetikan. Jadi misalnya, dari root, ketikdir /x pro*
. Anda akan melihat direktori yang Anda inginkan di sana bersama dengan nama 8dot3-nya. Kemudian gunakancd
untuk menavigasi ke sana dan ulangi prosesnya.$PATH
yang bekerja sangat mirip dengan%PATH%
di Windows, jadi saya tidak yakin apa maksud Anda sebenarnya. Sesuai ketentuan, nama direktori UNIX cenderung lebih pendek daripada di Windows, dan akibatnya$PATH
juga cenderung lebih pendek.Ini akan mengurai variabel lingkungan% PATH% Anda dan mengubah setiap direktori menjadi nama pendek yang setara dan kemudian menyatukannya kembali:
Ambil output dan perbarui variabel PATH dalam variabel lingkungan.
sumber
%%~sa
. Saya mencoba memperbarui jawabannya tetapi tidak mengizinkan saya kecuali saya mengubah 6 karakterjika Anda menggunakan windows vista atau lebih tinggi, Anda dapat membuat tautan simbolis ke folder tersebut. sebagai contoh:
mklink /d C:\pf "C:\Program Files"
akan membuat link jadi folder
c:\pf
Andaprogram files
. Saya memangkas 300 karakter dari jalur saya dengan menggunakan trik ini.sumber
c:\Program Files
danc:\Program Files (x86)
dengan variabel yang telah ditentukan sebelumnya%ProgramFiles%
dan%ProgramFiles(x86)%
tenforums.com/tutorials/… Ini hanya menyimpan beberapa karakter , tetapi jika Anda BENAR-BENAR hampir memaksimalkan PATH, itu bisa menjadi perbedaannya. Untuk masalah itu, saya akan membuat% pf% dan% pfx% yang menyelesaikan jalur yang benar. Terima kasih atas idenya! :)Jika ada yang tertarik ...
Saya merasa saya tidak pernah benar-benar membutuhkan semua jalur tersebut sekaligus, jadi saya membuat sekumpulan file batch "inisialisasi" yang memodifikasi jalur yang sesuai.
Misalnya, jika saya ingin melakukan pengembangan C ++ di Eclipse, saya akan melakukan:
Ini juga berguna untuk menghindari konflik antara file yang dapat dieksekusi dengan nama yang sama (seperti kompiler C ++ dan D, yang keduanya memiliki make.exe).
File batch saya biasanya terlihat seperti ini:
Saya menemukan pendekatan ini relatif bersih dan belum mengalami masalah.
sumber
Saya biasanya tidak perlu khawatir tentang ini (saya belum mengalami batas ukuran jalur - saya bahkan tidak tahu apa yang ada di sistem Windows modern), tetapi inilah yang mungkin saya lakukan untuk menghindari meletakkan direktori program di jalan:
c:\util
direktori yang berada di jalur tersebutjika tidak, saya akan menambahkan file cmd / batch sederhana ke
c:\util
direktori yang terlihat seperti:yang pada dasarnya membuat alias untuk perintah tersebut. Itu belum tentu sempurna. Beberapa program benar-benar bersikeras untuk berada di jalur (yang sangat jarang saat ini), dan program lain yang mencoba menjalankannya mungkin tidak menemukannya dengan benar. Tetapi untuk sebagian besar kegunaan itu bekerja dengan baik.
Tetapi secara umum, saya tidak perlu khawatir tentang menghindari penambahan direktori ke path.
sumber
cmd /c
, tetapi itu berarti skrip build menjadi khusus Windows: / Saya telah menanyakannya di pertanyaan terpisah .Ide lain: Gunakan DIR / X untuk menentukan nama pendek yang dihasilkan untuk nama file non-8dot3. Kemudian gunakan ini di% PATH% Anda.
Misalnya, 'C: \ Program Files' menjadi 'C: \ PROGRA ~ 1'.
sumber
GUNAKAN kunci registri Jalur Aplikasi, bukan variabel jalur untuk jalur khusus aplikasi:
http://msdn.microsoft.com/en-us/library/windows/desktop/ee872121(v=vs.85).aspx
sumber
Saya menulis dan menggunakan setiap waktu aliran standar (stdin / stderr / stdout) & kode keluar program PROXY (disebut dispatcher https://github.com/131/dispatcher )
Semua program CLI yang saya gunakan (node, php, python, git, svn, rsync, plink ...) yang saya gunakan sebenarnya adalah file exe yang sama (sekitar 10kb, yang saya beri nama berbeda), yang saya masukkan sama direktori. File teks bening statis tiruan melakukan "nama file proxy untuk pemetaan exe nyata".
Dispatcher menggunakan Process management win32 API tingkat rendah agar sepenuhnya transparan.
Dengan menggunakan software ini, saya hanya memiliki SATU direktori tambahan yang diatur di PATH saya untuk semua program yang mungkin saya gunakan.
sumber
Membuat folder c: \ bin menambahkan ke jalur Anda dan tautan keras seperti yang Anda katakan dapat mempersingkat string. Mungkin menambahkan variabel pf ke sistem vars dengan nilai c: \ Program Files lalu ganti c: \ Program Files dengan% pf% di jalur.
Edit:
Buat drive virtual. subst p: "c: \ program files"
sumber
Saya mengikuti langkah-langkah ini untuk membuat entri dapat dikelola:
Dibuat pengguna yang berbeda untuk kombinasi penggunaan paket perangkat lunak yang berbeda. Contoh: (a) Membuat web pengguna untuk menyediakan semua perangkat lunak pengembangan web; (b) Membuat database pengguna untuk menyediakan semua paket perangkat lunak database dan data warehousing. Ingat beberapa perangkat lunak dapat membuat lebih dari satu entri. Atau kadang saya memecah ini menjadi pengguna khusus oracle dan khusus MSSQL dan oracle. Saya menempatkan MySQL / PostgreSQL, tomcat, wamp, xamp semua ke dalam akun pengguna webr.
Jika memungkinkan, instal paket umum seperti office, photoshop, .. sebagai sistem khusus yang tersedia untuk semua pengguna dan paket khusus sesuai kebutuhan pengguna. Tentu saja saya harus masuk ke pengguna yang berbeda dan menginstalnya. Tidak semua perangkat lunak menyediakan opsi ini. Jika opsi "instal untuk pengguna ini saja" tidak tersedia, instal untuk seluruh sistem.
Saya menghindari menginstal program ke folder Program File (x86) atau ke Program File. Saya selalu menginstal ke direktori dasar. Misalnya MySQL 64 bit masuk ke "C: \ mysql64" dan MySQL 32 bit masuk ke folder "C: \ mysql". Saya selalu menganggap menambahkan sufiks 64 hanya untuk perangkat lunak 64bit. Jika tidak ada sufiks, maka itu adalah 32 bit. Saya mengikuti hal yang sama ke Java dan lainnya. Dengan cara ini jalur saya akan lebih pendek, tidak termasuk "C: \ Program File (x86)". Untuk beberapa perangkat lunak, file konfigurasi mungkin perlu diedit untuk menunjukkan di mana tepatnya file .exe berada. Hanya program yang meminta untuk diinstal ke "C: \ Program File (x86)" yang akan diinstal ke folder itu. Saya selalu ingat untuk mempersingkat nama. Saya menghindari nomor versi seperti detail seperti tomcat / rilis / versi-2.5.0.3. Jika saya perlu tahu versi, Saya membuat file dengan versi nama dan memasukkannya ke dalam folder kucing jantan. Secara umum persingkat tautan sebanyak mungkin.
Sertakan kumpulan apa pun untuk mengganti tautan yang disingkat ke jalur, jika semua langkah di atas melewati batas Windows.
Kemudian Masuk ke penggunaan khusus (aplikasi seluler, atau database / gudang data atau pengembangan web .. ..) pengguna dan lakukan tugas yang relevan.
Anda juga dapat membuat jendela virtual di dalam jendela. Selama Anda memiliki satu salinan OS berlisensi, membuat beberapa jendela virtual dengan kunci yang sama dimungkinkan. Anda dapat meletakkan paket khusus untuk tugas tertentu di mesin itu. Anda harus meluncurkan VM terpisah setiap kali. Beberapa paket intensif memori seperti pembuat film animasi 3D semuanya harus dimasukkan ke mesin utama, bukan ke VM karena VM hanya akan memiliki sebagian dari RAM yang tersedia untuk penggunaannya. Ini menyakitkan untuk mem-boot setiap VM.
sumber
Solusi di atas hanya berfungsi jika Anda dapat memangkas jalan Anda. Dalam kasus saya, itu sebenarnya bukan pilihan, dan itu merepotkan untuk menjalankan skrip setiap kali saya membuka prompt perintah. Jadi saya menulis skrip sederhana yang berjalan secara otomatis saat membuka command prompt, dan menambahkan konten file teks ke jalur Anda.
Ada juga beberapa konteks di mana menjalankan skrip ini merusak sesuatu (katakanlah, di github atau shell cygwin), jadi saya juga menambahkan file yang berisi daftar jalur yang, jika command prompt dimulai di dalamnya, variabel jalur isn tidak diubah melalui skrip startup yang biasanya memperbarui jalur.
Dan Path.txt akan terlihat seperti ini
Sedangkan Dontsetup.txt akan terlihat seperti
Untuk membuat ini berjalan secara otomatis saat startup, buka regedit, arahkan ke HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Command Processor, lalu klik kanan di sebelah kanan dan tekan new -> Multi-String Value. Beri nama AutoRun. Setel nilainya menjadi
atau di mana pun Anda menyimpan file batch di atas.
sumber
Tidak mencobanya, tetapi akankah memisahkan PATH menjadi beberapa bagian berfungsi dan menggabungkannya dalam pekerjaan variabel akhir?
Contoh awalnya katakanlah Anda memiliki sesuatu seperti
PATH={LONGPATH1};{LONGPATH2};....{2048th char}....{LONGPATH_N-1};{LONGPATH_N}
Sebagai gantinya Anda membuat:
sumber