DOS Text-Dateien unter Windows anzeigen
Hallo Admins,
Ich versuche verzweifelt eine in der Kommandozeile erstellte Textdatei unter Windows 7 korrekt anzuzeigen. Ich komme aber nicht weiter.
Eingabe an der Kommandozeile:
ipconfig /all | find "ü" > c:\test.txt
start c:\test.txt
Daraufhin startet Notepad mit folgender Ausgabe:
NetBIOS ber TCP/IP . . . . . . . : Aktiviert
NetBIOS ber TCP/IP . . . . . . . : Aktiviert
(Das ü fehlt)
Ich weiß, das ich mit Wordpad die Datei korrekt öffnen kann, wenn ich als Format MS-DOS auswähle. Das kann ich in meinem Fall aber nicht nutzen, da ich das Programm aus der Batch heraus starten möchte. Wenn ich Wordpad die Textdatei als Parameter mitgebe, wird sie ebenso wie in Notepad falsch angezeigt.
Mögliche Lösungen, welche ich aber alle nicht realisiert bekomme:
1. Wordpad mit Parameter starten, dass die Datei im MS-DOS Format geladen wird. Dazu konnte ich nichts finden.
2. Die Textdatei an der Kommandozeile auf Umlaute untersuchen und durch ae oe und ue ersetzen.
3. Die Textdatei (ASCII) in das ANSI-Format konvertieren. Hier habe ich nur den umgekehrten Weg gefunden (mit TYPE).
Wichtig ist, dass es mit Windows Bordmitteln (XP, Vista, 7) funktioniert. Bevorzugt direkt in der Batch. Notfalls mit eingebetteter vbs-Datei. Hat jemand Ideen dazu?
Gruß
Mathias
Ich versuche verzweifelt eine in der Kommandozeile erstellte Textdatei unter Windows 7 korrekt anzuzeigen. Ich komme aber nicht weiter.
Eingabe an der Kommandozeile:
ipconfig /all | find "ü" > c:\test.txt
start c:\test.txt
Daraufhin startet Notepad mit folgender Ausgabe:
NetBIOS ber TCP/IP . . . . . . . : Aktiviert
NetBIOS ber TCP/IP . . . . . . . : Aktiviert
(Das ü fehlt)
Ich weiß, das ich mit Wordpad die Datei korrekt öffnen kann, wenn ich als Format MS-DOS auswähle. Das kann ich in meinem Fall aber nicht nutzen, da ich das Programm aus der Batch heraus starten möchte. Wenn ich Wordpad die Textdatei als Parameter mitgebe, wird sie ebenso wie in Notepad falsch angezeigt.
Mögliche Lösungen, welche ich aber alle nicht realisiert bekomme:
1. Wordpad mit Parameter starten, dass die Datei im MS-DOS Format geladen wird. Dazu konnte ich nichts finden.
2. Die Textdatei an der Kommandozeile auf Umlaute untersuchen und durch ae oe und ue ersetzen.
3. Die Textdatei (ASCII) in das ANSI-Format konvertieren. Hier habe ich nur den umgekehrten Weg gefunden (mit TYPE).
Wichtig ist, dass es mit Windows Bordmitteln (XP, Vista, 7) funktioniert. Bevorzugt direkt in der Batch. Notfalls mit eingebetteter vbs-Datei. Hat jemand Ideen dazu?
Gruß
Mathias
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 165071
Url: https://administrator.de/contentid/165071
Ausgedruckt am: 25.11.2024 um 13:11 Uhr
9 Kommentare
Neuester Kommentar
gelöscht, war ein Versehen.
Naja, mit VBSimplementierung könnte es in etwa so aussehen:
aber ob somit das Ü-Problem gelöst werden kann???
Gruss
Tsuki
@Echo OFF
>"C:\MeinIPCONFIG.vbs" Echo Set objShell = CreateObject("WScript.Shell")
>>"C:\MeinIPCONFIG.vbs" Echo Set objWshScriptExec = objShell.Exec("ipconfig /all")
>>"C:\MeinIPCONFIG.vbs" Echo Set objStdOut = objWshScriptExec.StdOut
>>"C:\MeinIPCONFIG.vbs" Echo strOutput = objStdOut.ReadAll
>>"C:\MeinIPCONFIG.vbs" Echo Set FSO = CreateObject("Scripting.FileSystemObject")
>>"C:\MeinIPCONFIG.vbs" Echo Set MeineDatei = FSO.CreateTextFile("C:\Test.txt",True).Write(strOutput)
>>"C:\MeinIPCONFIG.vbs" Echo MeineDatei.Close
>>"C:\MeinIPCONFIG.vbs" Echo Set FSO = Nothing
Call "C:\MeinIPCONFIG.vbs"
REM hier käme deine FOR-Schleife mit FINDSTR "Ü"
REM aber da wären wir ja wieder beim Problem, oder?
del C:\MeinIPCONFIG.vbs /q
Gruss
Tsuki
Hallo matsahm.
Dann hast du noch nicht genug gespielt. Natürlich liegt des Rätsels Lösung in der Zeichenkodierung. Folgendes funktioniert (wenn auch langsam).
Der Code ist im ANSI Format gespeichert (was die meisten Texteditoren by default tun) und erzeugt bei mir folgenden Dateiinhalt:
Grüße
rubberman
Dann hast du noch nicht genug gespielt. Natürlich liegt des Rätsels Lösung in der Zeichenkodierung. Folgendes funktioniert (wenn auch langsam).
@echo off &setlocal
>C:\test.txt type nul
for /f "delims=" %%a in ('ipconfig /all') do (
set "line=%%a"
call :proc
)
goto :eof
:proc
setlocal enabledelayedexpansion
chcp 1252>nul
>>C:\test.txt (echo(!line!|find "ü")
endlocal
goto :eof
Der Code ist im ANSI Format gespeichert (was die meisten Texteditoren by default tun) und erzeugt bei mir folgenden Dateiinhalt:
NetBIOS über TCP/IP . . . . . . . : Deaktiviert
NetBIOS über TCP/IP . . . . . . . : Deaktiviert
Grüße
rubberman
Hallo matsahm,
dazu kannst du den alten Trick mit findstr /n "^" nutzen. Hierbei werden alle Zeilen (incl. Leerzeilen) durchnummeriert. Die Zeilennummer wird anschließend über den Doppelpunkt als Delimiter abgeschnitten ...
Grüße
rubberman
dazu kannst du den alten Trick mit findstr /n "^" nutzen. Hierbei werden alle Zeilen (incl. Leerzeilen) durchnummeriert. Die Zeilennummer wird anschließend über den Doppelpunkt als Delimiter abgeschnitten ...
@echo off &setlocal
>C:\test.txt type nul
for /f "tokens=1* delims=:" %%a in ('ipconfig /all^|findstr /n "^"') do (
set "line=%%b"
call :proc
)
goto :eof
:proc
setlocal enabledelayedexpansion
chcp 1252>nul
>>C:\test.txt echo(!line!
endlocal
goto :eof
Grüße
rubberman
Hallo matsahm,
die Klammer sieht etwas befremdlich aus, ist aber letztlich eines der möglichen Zeichen die erforderlich sind, um auch Leerzeilen auszugeben. Verbreiteter ist natürlich das
Warum ich statt dessen meistens
verwende, kannst du ECHO. (Zeilenvorschub) funktioniert nicht nachlesen.
Das EnableDelayedExpansion nutze ich, um eventuelle Sonderzeichen ohne Maskierung ausgeben zu können (auch wenn das in diesem Fall vermutlich nicht nötig ist).
Grüße
rubberman
die Klammer sieht etwas befremdlich aus, ist aber letztlich eines der möglichen Zeichen die erforderlich sind, um auch Leerzeilen auszugeben. Verbreiteter ist natürlich das
echo.
echo(
Das EnableDelayedExpansion nutze ich, um eventuelle Sonderzeichen ohne Maskierung ausgeben zu können (auch wenn das in diesem Fall vermutlich nicht nötig ist).
Grüße
rubberman