Frage Windows Batch-Entsprechung von "command" in Linux Bash


In Linux Bash gibt es ein command Befehl, der den Befehl "real" ausführen kann, auch wenn Sie einen Funktionsnamen oder einen Skriptdateinamen haben, der gleich diesem Befehl benannt ist.

function ping(){
    echo do nothing
}
command ping

wird immer noch funktionieren.

In Windows Batch habe ich eine Datei ping.cmd was in die Schleife geht, wenn ich laufe ping in ihm drin.

Was ist das Äquivalent von? command im Windows-Stapel?


0
2017-12-02 13:46


Ursprung


Meine Antwort wurde aktualisiert, da ich die mögliche Fehlerbehebung komplett vergessen hatte. - grawity


Antworten:


Antwort 1: Keine, weil Windows-Batch ist nicht einmal haben Funktionen wie Bash tut. Es hat nur Subroutinen, die eine andere Syntax als normale Befehle verwenden - ping vs call :ping - Es besteht keine Notwendigkeit für eine Außerkraftsetzung.

Wenn Sie die Dokumentation genauer lesen, command überspringt nur Aliase und Funktionen, tut aber nichts über Skripte in $ PATH. In beiden SchalenWenn Sie eine echte Skriptdatei überschreiben, Es liegt an Ihnen, den "echten" Befehl zu finden.

Antwort 2: Um die von Ihnen beschriebene Schleife zu vermeiden, Sie müssen den vollständigen Namen angeben von "ping".

  • Mit Bash würde das Calling bedeuten /bin/pingoder vielleicht über $ PATH laufen, bis Sie es gefunden haben.

  • Unter Windows gibt es dieselben Optionen. Allerdings, da Ihr Skript tatsächlich aufgerufen wird ping.bat oder ping.cmd, Sie können Lauf ping.exe Schleifen vermeiden.


2
2017-12-02 14:07