CHCP und DIR in einer Zeile?

OP (Firma: Q3) #7487378
Lesenswert?
• ▲
▼

Aus einer Windows-Anwendung heraus wird ein CMD-Kommando "DIR > dir.txt" mit Umleitung in eine Datei direkt ausgeführt, ohne dies vorher in ein Batch-File zu schreiben.

Weil dabei Umlaute in Dateinamen "zerschossen" (ANSI/ASCII-Problem) werden, soll noch das Kommando CHCP (mit passender Codepage) vorangestellt werden, aber auch mögl. wieder, ohne extra eine Batch-Datei zu schreiben ...

Lange Frage, kurzer Sinn: Gibt es eine Möglichkeit, CHCP und DIR in einer Zeile aufzurufen? Wenn ja, wie sieht bitte die Syntax dazu aus?

Google findet immer nur Lösungen mit Batch-Datei. Danke.

OP (Firma: Q3) #7487797
Lesenswert?
• ▲
▼

Danke für die Mühe derer, die geantwortet haben, leider umsonst.

Mit Pipe "|" gibts eine Fehlermeldung von wegen "falscher Prameter" und mit "&" gibts zwar keine Fehlermeldung, aber es "wirkt" auch nicht. Schade ...

Wenn ich beide Kommandos in einer Shell nacheinander eingebe, dann klappt es (mit "&"). Aber in einem programm-internen Shell-Aufruf (ohne extra Batch-Datei) leider nicht :-(

(Windows Server 2012R2)

#7487815
Lesenswert?
• ▲
▼

Frank E. schrieb:

Mit Pipe "|" gibts eine Fehlermeldung von wegen "falscher Prameter"

Leerzeichen beachtet?

Zwischen der 1252 und | muss ein Leerzeichen stehen.

Nachtrag: Es kann natürlich sein, daß das ganze nicht an cmd.exe übergeben wird, sondern direkt via CreateProcess ausgeführt wird.

Du kannst auch das hier ausprobieren:

[pre] cmd /c "chcp 1252 & dir > dir.txt" [/c]

Auch hier: Leerzeichen beachten

#7487869
Lesenswert?
• ▲
▼

Autorun im cmd: https://www.windowspage.de/tipps/022472.html

1
Starten Sie ...\windows\regedit.exe bzw. ...\winnt\regedt32.exe.
2
Klicken Sie sich durch folgende Schlüssel (Ordner) hindurch:
3
HKEY_CURRENT_USER
4
Software
5
Microsoft
6
Command Processor
7
Doppelklicken Sie auf den Schlüssel "AutoRun".
8
Falls dieser Schlüssel noch nicht existiert, dann müssen Sie ihn erstellen. Dazu klicken Sie mit der rechten Maustaste in das rechte Fenster. Im Kontextmenü wählen Sie "Neu" > "Wert der erweiterbaren Zeichenfolge" (REG_EXPAND_SZ). Als Schlüsselnamen geben Sie "AutoRun" ein.
9
Als Zeichenfolge geben Sie den/die Befehl(e) ein, die beim Start der Eingabeaufforderung ausgeführt werden sollen. Z.B.: "DIR %windir%"
10
Die Änderungen werden ggf. erst nach einem Neustart aktiv.
OP (Firma: Q3) #7488085
Lesenswert?
• ▲
▼

Wenn man CMD öffnet und nacheinander

CHCP 1250 DIR > DIR.TXT

eingibt, dann wird zuerst die Codepage der Shell geändert und danach in der gleichen Shell das DIR-Kommando ausgeführt. DAS funktioniert selbstverständlich.

Anscheinend ist es doch etwas Anderes, wenn man ein Shell-Kommando aus einer Windows-Anwendung heraus mit den beiden Befehlen mit "&", wie weiter oben beschrieben, ausführt.

Habs mehrfach probiert. Muss wohl dann doch den Weg über ein Batch-File gehen, den Pfad für DIR dann eben als Paramter übergeben ...

OP (Firma: Q3) #7488162
Lesenswert?
• ▲
▼

Harald K. schrieb:

Hast Du denn auchcmd /c "chcp 1252 & dir > dir.txt" ausprobiert?

Es funktioniert, wenn man es in CMD eingibt, leider nicht in einem Aufruf.

Hier ist mein Xojo-Code:

1
var s as new shell
2
s.execute "cmd /c " + chr(35) + "chcp 1252 & dir > dir.txt" + chr(35)
3
msgbox s.result

Die MsgBox zeigt "Codepage is now 1250", sonst nichts. Das nachfolgende DIR-Kommando schreibt dann aber aber trotzdem Exponenten und TM-Symbole anstatt der Umlaute in die Datei.

Ich habe in dem Testordner Dateien nach folgendem Muster: test_Ä.txt, test_Ö.txt usw. Um mir jetzt erstmal Stress mit einem langen Pfad zu ersparen, starte ich die compilierte Testapp aus dem Ordner mit den Testdateien.

#7489865
Lesenswert?
• ▲
▼

Also nach dem Befehl

1
chcp 1252

kommt die Ausgabe

1
Codepage is now 1250

? Das ist schonmal sehr seltsam. Die Andere Frage ist, welche Codepage brauchst Du denn ? 1252 auch ANSI genannt oder gleich UTF-8 ? Das wäre 65001. Erzeuge doch mal 3 Dateien : ganz ohne chcp, mit chcp 1252 und mit chcp 65001.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 3 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.