CMD
Utilitas Windows memiliki sejumlah perintah internal, seperti mklink
. Bagaimana mereka bisa digunakan dari msys
shell?
Dari CMD
dokumentasi , /c
saklar dapat digunakan untuk menjalankan perintah dan keluar; tapi ini sepertinya tidak berhasil.
- Jika saya melakukan
cmd /c mklink
itumklink
perintah tidak dijalankan danCMD
shell tidak keluar.
Sebelum menekan Enter:
Setelah:
Tangkapan layar Monitor Proses:
- Mencoba menjalankan perintah sebagai proses latar belakang:
cmd /c mklink &
tampaknya berfungsi -mklink
perintah dijalankan, tetapiCMD
shell tidak dihentikan. Setiap kaliEnter
ditekan,CMD
akan menjadi shell yang aktif.
command-line
msysgit
msys
Mihai Rotaru
sumber
sumber
cmd /c mklink
bekerja untuk saya dengan shell C saya, dengan Cygwinbash
dan dengancmd.exe
. Tapi saya memang harus menjalankan ditinggikan atau saya mendapat keluhan, "Anda tidak memiliki hak yang cukup untuk melakukan operasi ini." Saya belum mencobamsys
karena saya belum menginstalnya tetapi saya ragu itulah masalahnya. Saya curiga ada hal lain yang terjadi. Transkrip atau cuplikan layar dari apa yang Anda lakukan dan apa yang terjadi mungkin membantu.mklink
berfungsi, shell memang perlu dijalankan sebagai administrator; tetapi masalah saya adalah bahwa saya tidak dapat menjalankan perintah internal apa pun tanpacmd
shell mengambil alih atau berjalan di latar belakang. Masalah ini juga hadir untuk perintah sederhana yang tidak memerlukan admin, sepertidir
.cmd
?msys
konversi/c
kec:\
. Jawabannya adalah untuk menghindarinya, dan jalankan perintah sebagaicmd //c mklink
.Jawaban:
Cari% PATH% Anda untuk cmd.cmd atau cmd.bat. Mereka dapat mengganggu cmd Anda
Jalankan Monitor Proses dan jalankan
cmd /c mklink
. Periksa log ProcMon untuk perintah yang benar-benar dijalankan.sumber
msys
akan dikonversi/c
menjadic:\
; perlu melarikan diri:cmd //c mklink
. Cara konversi ini dilakukan dijelaskan di sini .win7 / cygwin / bash memiliki masalah yang sama, solusinya adalah meluncurkan cmd dua kali, dan mengonversi garis miring menjadi garis miring terbalik seperti yang dibutuhkan oleh cmd (misalnya):
REPO_DIR=${REPO_DIR////\\} # Example, Turn c:/cvs into c:\cvs for cmd
cmd /C "cmd /C mklink /D .Repo $REPO_DIR" # launch cmd /C cmd /C cmd
sumber
Saya tidak bisa mendapatkan ini bekerja berdasarkan komentar Mihai saja, karena jalan masih berisi garis miring
/
di dalamnya, danmklink
mengeluh bahwa/msys64
itu bukan saklar yang valid.Jadi saya menulis skrip batch untuk membuatnya berfungsi.
Inilah cara saya memanggil skrip batch dari MSYS:
Dan, skrip batch mengambil dua jalur tersebut, dan dikonversi
/
menjadi\
, menggunakan:OLD=NEW
sintaks ekspansi parameter untuk penggantian string. 11 Ini mirip dengan
${PARAM:/OLD/NEW}
sintaks bash , bagi mereka yang akrab dengannyasumber