Ich schreibe eine Batch-Datei für Windows und verwenden Sie den Befehl 7z
(7-Zip). Ich habe den Standort in den Pfad eingefügt. Gibt es eine relativ einfache Möglichkeit zu überprüfen, ob der Befehl verfügbar ist?Überprüfen Sie, ob der Befehl in Batch-Datei verfügbar ist
Antwort
Ein Versuch, 7z.exe
auszuführen, wird einen %errorlevel%
von 9009 zurückgeben, wenn der Befehl nicht gefunden wird. Das kannst du überprüfen.
7z.exe
if %errorlevel%==9009 echo Command Not Found
Eine schönere Art wäre '7z.exe> nul 2> & 1 | Echo Command nicht gefunden ", denke ich. – Joey
Der beste Weg, IMO wäre: http://stackoverflow.com/a/27014081/1724702 –
Ja, öffnen Sie ein Befehlsfenster und geben Sie "7z" ein (ich nehme an, das ist der Name der ausführbaren Datei). Wenn Sie einen Fehler erhalten, der besagt, dass der Befehl oder die Operation nicht erkannt wird, wissen Sie, dass die path-Anweisung irgendwo ein Problem enthält, anderenfalls nicht.
Yup,
@echo off
set found=
set program=7z.exe
for %%i in (%path%) do if exist %%i\%program% set found=%%i
echo "%found%"
Dies funktioniert nicht mit in Anführungszeichen gesetzten Pfaden, die Leerzeichen enthalten. – Joey
Danke, warum sagst du 'set found ='? – rynd
@Joey gibt es eine einfache Lösung dafür. Verwenden Sie doppelte Anführungszeichen. Dies funktioniert jedoch nicht, wenn die Erweiterung des Befehls (exe, bat) nicht angegeben wird, während die akzeptierte Lösung dies tut. – khattam
Ich würde nicht empfehlen die Ausführung des Befehls zu prüfen, ob es für die Verwendung (beispielsweise in PATH
Umgebungsvariable) zur Verfügung steht. Also ich denke, der beste Ansatz würde die where
Befehl verwenden:
where 7z.exe >nul 2>nul
if %errorlevel%==1 (
@echo 7z.exe not found in path.
[do something about it]
)
Die >nul
und 2>nul
sind optional; wird hier verwendet, um die Anzeige der Standardausgabe und der Standardfehlerausgabe zu verhindern, die durch den Befehl where
generiert werden.
aktualisieren: Warum Sie nicht ausführen möchten:
- Sie werden vielleicht nicht wirklich nicht wissen, was das Programm macht
- Das Programm könnte Nebenwirkungen haben - es ist etwas tun könnte, dass Sie wissen aber wollen nicht - wie löschen von Dateien, Cache neu erstellen usw.
- Das Programm ressourcenintensiv sein könnte/langsam
Das Problem besteht darin, festzustellen, ob das Programm verfügbar ist oder nicht, und Sie sollten es einfach überprüfen.
Wette 'IF' Bedingung:' IF NOT ERRORLEVEL 0'. Siehe [IF] (http://ss64.com/nt/if.html). – jpmc26
Warum würden Sie die Ausführung nicht empfehlen? Ist es im Allgemeinen oder in diesem speziellen Fall? – quimnuss
Viele Gründe, die nicht ausgeführt werden müssen: Nebeneffekte, Sie wissen vielleicht nicht, was das Programm macht, das Programm könnte ressourcenintensiv/langsam sein usw. –
- 1. Überprüfen Sie, ob ein Video verfügbar ist
- 2. Überprüfen Sie, ob iAd verfügbar ist
- 3. Überprüfen Sie, ob eine Funktion in Swift verfügbar ist.
- 4. Wie überprüfen Sie, ob eine Eigenschaft in PHP verfügbar ist?
- 5. Überprüfen, ob das Gerät "angeschlossen"/verfügbar ist
- 6. Überprüfen Sie, ob ein Modul node.js verfügbar ist
- 7. Überprüfen Sie, ob die Domain zum Kauf verfügbar ist - C#
- 8. Überprüfen Sie, ob ein SQL-Server programmgesteuert verfügbar ist.
- 9. Überprüfen Sie, ob Internet-Verbindung über Proxy verfügbar ist
- 10. Der beste Weg, um zu überprüfen, ob IPv6 verfügbar ist
- 11. Sehen Sie, ob Alfresco Server verfügbar ist
- 12. Überprüfen Sie, ob es möglich ist, einen Befehl als sudo in der Bourne-Shell auszuführen.
- 13. Überprüfen Sie, ob Daten in Sockets in Python verfügbar sind
- 14. Überprüfen Sie, ob der Benutzer angemeldet ist
- 15. Überprüfen Sie, ob der Typ generisch ist
- 16. Überprüfen Sie, ob die Zeile nicht in der mySQL-Tabelle verfügbar ist
- 17. Überprüfen Sie, ob ein Benutzer root ist
- 18. Prüfen, ob Service verfügbar ist
- 19. Überprüfen, ob ein Befehl in PATH/ausführbar ist als Prozess
- 20. Überprüfen, ob die iOS-App im App Store verfügbar ist
- 21. Prüfen, ob DB verfügbar ist
- 22. Überprüfen, ob NFS von Vagrantfile aus verfügbar ist
- 23. Python - wie zu überprüfen, ob schwache Referenz noch verfügbar ist
- 24. Überprüfen, ob Remote/externe Webseite verfügbar ist und Statuscode
- 25. Um zu überprüfen, ob Sitzung verfügbar ist oder nicht
- 26. Wie kann ich überprüfen, ob scp verfügbar ist?
- 27. Befehl wird nach ant Befehl in Batchdatei ignoriert
- 28. Pass Batchdatei ECHO in PUSHD Eingabeaufforderung Befehl
- 29. Überprüfen Sie, ob der Benutzer root in C ist?
- 30. Überprüfen Sie, ob es der letzte Datensatz in sqldatareader ist
Nicht ausführen. Der beste Weg IMO wäre: http://Stackoverflow.com/a/27014081/1724702 –