Ich schreibe ein Skript, das für das Lesen der Befehlsausgabe vom Windows-Terminal verantwortlich ist.
Die Absicht besteht darin, die Befehlszeilenausgabe mit dem Befehl " sc query <service_name>
" zu lesen und basierend auf regulären Ausdrücken präzisere Daten zu verwenden und an den Benutzer erneut zu senden.
Das Problem besteht darin, dass sich der Ausgabeinhalt je nach Benutzersprache vollständig ändern kann. Ich sollte kein Skript schreiben, das das " sc query
" in allen möglichen Sprachen interpretiert. Es ist besser, vor dem Ausführen des Skripts eine gemeinsame Sprache festzulegen, damit ich unabhängig von der Benutzersprache mit einem einzigen Ausgabeformat arbeiten kann.
Das erste, was bei der Suche erscheint, ist der chcp
Befehl " ". Aber der funktioniert bei mir nicht, und die Suche geht auch nicht viel weiter, wenn der Befehl nicht funktioniert.
Sie können im Bildschirmausdruck meine Versuche zum Ändern der Sprache (zweimal) und ein Beispiel für den auf Portugiesisch ausgegebenen Ausgabedienst überprüfen.
Beispielausgabe des Versuchs zum Ändern der Befehlssprache durch chcp:
Was muss ich tun? Gibt es eine andere Möglichkeit, die Befehlssprache zu ändern, oder muss ich etwas anderes tun, damit der chcp
Befehl funktioniert?
Antwort1
Was vorhaben Sie? Ich habe keine Ahnung, aber ich verstehe, dass die Ausgabe des SC
Befehls in den Elementen, die den Status der Prozesse beschreiben, in der jeweiligen Systemsprache auf Englisch erfolgen wird. Daher schlage ich vor, etwas zu tun, das die Ausgabe auf vorhersagende Weise auf mögliche Status abfängt und in die gewünschte Sprache umwandelt/übersetzt.
Antwort2
CHCP
ändert die Kodierung, nicht die Sprache. Dafür gibt es keinen Befehl. Wenn Sie mehrere Sprachen installiert haben, gibt es im Systembenachrichtigungsbereich ein Symbol zum Ändern der Sprache.
Dieser Befehl macht also nicht das, was ich denke. Warum macht er nicht das, was ich denke?
Antwort3
Mein vorgeschlagener Ansatz, gefunden in einemSO Antwort auf eine verwandte Frage, ist zuZielen Sie auf sehr spezifische Dinge, die ortsunabhängig sind. In diesem Fall besteht das Ziel beim Abrufen des Dienststatus aus darin sc.exe
, die Ganzzahl zu erhalten, die den Status identifiziert (der sich als unabhängig von der aktiven Sprache und daher robust herausgestellt hat).
Kurzes Beispiel (weitere Details in der verlinkten Antwort):
for /F "skip=3 tokens=3" %%i in ('""%windir%\system32\sc.exe" query "W32Time" 2^>nul"') do (
if "%%i"=="4" (
echo 'W32Time' service is running
goto :SkipRemainingIterations
)
)
:SkipRemainingIterations
Antwort4
Um die Sprache des CMD-Terminals zu ändern, wenn der Befehl „chcp“ nicht funktioniert, können Sie die folgenden Schritte versuchen:
Öffnen Sie das CMD-Terminal: Starten Sie das CMD-Terminal auf Ihrem Windows-Computer.
Spracheinstellungen prüfen: Überprüfen Sie die aktuellen Spracheinstellungen Ihres Betriebssystems. Gehen Sie dazu in die „Systemsteuerung“ oder „Einstellungen“ und navigieren Sie zu den Optionen „Sprache“ oder „Region“. Stellen Sie sicher, dass die gewünschte Sprache als Standardsprache ausgewählt ist.
Systemgebietsschema ändern: Wenn die Sprachänderung nicht in CMD angezeigt wird, müssen Sie möglicherweise das Systemgebietsschema ändern. Suchen Sie in den Spracheinstellungen nach der Registerkarte „Verwaltung“ oder „Erweitert“. Suchen Sie die Option „Systemgebietsschema ändern“ und wählen Sie die gewünschte Sprache aus. Dadurch werden die Spracheinstellungen für Nicht-Unicode-Programme geändert.
Starten Sie den Computer neu: Nach der Änderung des Systemgebietsschemas wird empfohlen, den Computer neu zu starten. Dadurch wird sichergestellt, dass die Sprachänderungen wirksam werden.
Wenn Sie diese Schritte befolgen, sollten Sie in der Lage sein, die Sprache des CMD-Terminals zu ändern.