Das Windows- CMD
Dienstprogramm verfügt über eine Reihe von internen Befehlen, z mklink
. Wie können sie von der msys
Shell verwendet werden?
Aus CMD
der Dokumentation kann der /c
Schalter verwendet werden, um einen Befehl auszuführen und zu beenden. aber das scheint nicht zu funktionieren.
- Wenn ich das tue, wird
cmd /c mklink
dermklink
Befehl nicht ausgeführt und dieCMD
Shell wird nicht beendet.
Bevor Sie die Eingabetaste drücken:
Nach:
Prozessmonitor-Screenshot:
- Der Versuch, den Befehl als Hintergrundprozess auszuführen:
cmd /c mklink &
funktioniert anscheinend - dermklink
Befehl wird ausgeführt, dieCMD
Shell wird jedoch nicht beendet. Jedes MalEnter
, wenn gedrückt wird,CMD
wird die aktive Shell.
command-line
msysgit
msys
Mihai Rotaru
quelle
quelle
cmd /c mklink
arbeitet für mich mit meiner C-Shell, mit Cygwinbash
und mitcmd.exe
. Aber ich musste erhöht laufen, sonst bekam ich Beschwerden: "Sie haben nicht genügend Rechte, um diese Operation auszuführen." Ich habe es nicht versucht,msys
weil ich es nicht installiert habe, aber ich bin skeptisch, dass das das Problem ist. Ich bin misstrauisch, dass noch etwas los ist. Ein Transkript oder ein Screenshot davon, was Sie getan haben und was passiert ist, könnte hilfreich sein.mklink
die Arbeit muss die Shell tatsächlich als Administrator ausgeführt werden. Mein Problem ist jedoch, dass ich keinen der internen Befehle ausführen kann, ohne dass diecmd
Shell die Funktion übernimmt oder im Hintergrund ausgeführt wird. Dieses Problem tritt auch bei einfacheren Befehlen auf, für die kein Administrator erforderlich ist, zdir
.cmd
?msys
Konvertierung/c
in erfolgtc:\
. Die Antwort ist, es zu entkommen und den Befehl als auszuführencmd //c mklink
.Antworten:
Durchsuchen Sie% PATH% nach cmd.cmd oder cmd.bat. Sie können Ihre cmd stören
Führen Sie Process Monitor aus und führen Sie Ihr
cmd /c mklink
. Untersuchen Sie das ProcMon-Protokoll auf tatsächlich ausgeführte Befehle.quelle
msys
wird konvertieren/c
zuc:\
; Es muss entronnencmd //c mklink
. Die Art und Weise, wie diese Konvertierungen durchgeführt werden, wird hier erläutert .win7 / cygwin / bash hatte das gleiche Problem. Die Lösung besteht darin, cmd zweimal zu starten und Schrägstriche nach Bedarf von cmd in umgekehrte Schrägstriche umzuwandeln (zum Beispiel):
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
quelle
Ich konnte dies nicht allein auf Grundlage von Mihais Kommentar zum Laufen bringen, da der Pfad immer noch Schrägstriche enthielt
/
und sich darübermklink
beschwerte, dass dies/msys64
kein gültiger Wechsel war.Also habe ich ein Batch-Skript geschrieben, damit es funktioniert.
So rufe ich mein Batch-Skript von MSYS aus auf:
Das Stapelskript verwendet diese beiden Pfade und konvertiert
/
sie\
mithilfe der:OLD=NEW
Parametererweiterungssyntax zum Ersetzen von Zeichenfolgen in. 11 Dies ähnelt der
${PARAM:/OLD/NEW}
Syntax von bash , für diejenigen, die damit vertraut sindquelle