Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

DOS Text-Dateien unter Windows anzeigen

Frage Entwicklung Batch & Shell

Mitglied: matsahm

matsahm (Level 1) - Jetzt verbinden

22.04.2011 um 12:29 Uhr, 4732 Aufrufe, 9 Kommentare

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
Mitglied: 99045
22.04.2011 um 12:43 Uhr
gelöscht, war ein Versehen.
Bitte warten ..
Mitglied: TsukiSan
22.04.2011 um 16:17 Uhr
eventuell liegt's an der Keyboardeinstellung CHCP

Gruss
Tsuki
Bitte warten ..
Mitglied: matsahm
22.04.2011 um 16:22 Uhr
Damit habe ich schon gespielt, aber die Ausgabe hat sich nicht verändert

Gruß
Mathias
Bitte warten ..
Mitglied: TsukiSan
22.04.2011 um 16:40 Uhr
Naja, mit VBSimplementierung könnte es in etwa so aussehen:
01.
@Echo OFF 
02.
>"C:\MeinIPCONFIG.vbs" Echo Set objShell = CreateObject("WScript.Shell") 
03.
>>"C:\MeinIPCONFIG.vbs" Echo Set objWshScriptExec = objShell.Exec("ipconfig /all") 
04.
>>"C:\MeinIPCONFIG.vbs" Echo Set objStdOut = objWshScriptExec.StdOut 
05.
>>"C:\MeinIPCONFIG.vbs" Echo strOutput = objStdOut.ReadAll 
06.
>>"C:\MeinIPCONFIG.vbs" Echo Set FSO = CreateObject("Scripting.FileSystemObject") 
07.
>>"C:\MeinIPCONFIG.vbs" Echo Set MeineDatei = FSO.CreateTextFile("C:\Test.txt",True).Write(strOutput) 
08.
>>"C:\MeinIPCONFIG.vbs" Echo MeineDatei.Close 
09.
>>"C:\MeinIPCONFIG.vbs" Echo Set FSO = Nothing 
10.
 
11.
Call "C:\MeinIPCONFIG.vbs" 
12.
 
13.
REM hier käme deine FOR-Schleife mit FINDSTR "Ü" 
14.
REM aber da wären wir ja wieder beim Problem, oder? 
15.
 
16.
del C:\MeinIPCONFIG.vbs /q
aber ob somit das Ü-Problem gelöst werden kann???

Gruss
Tsuki
Bitte warten ..
Mitglied: rubberman
22.04.2011 um 23:46 Uhr
Hallo matsahm.

Zitat von matsahm:
Damit habe ich schon gespielt, aber die Ausgabe hat sich nicht verändert

Dann hast du noch nicht genug gespielt. Natürlich liegt des Rätsels Lösung in der Zeichenkodierung. Folgendes funktioniert (wenn auch langsam).
01.
@echo off &setlocal 
02.
>C:\test.txt type nul 
03.
for /f "delims=" %%a in ('ipconfig /all') do ( 
04.
  set "line=%%a" 
05.
  call :proc 
06.
07.
goto :eof 
08.
 
09.
:proc 
10.
setlocal enabledelayedexpansion 
11.
chcp 1252>nul 
12.
>>C:\test.txt (echo(!line!|find "ü") 
13.
endlocal 
14.
goto :eof 
15.
 
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
Bitte warten ..
Mitglied: matsahm
23.04.2011 um 08:43 Uhr
Hallo Rubberman,

Vielen dank, das Funktioniert. Ich brauche aber die ganze Ausgabe von ipconfig. Das | find "ü" war hier nur für die schnelle Demonstration. Wenn ich das aus deinem Skript entferne, werden aber alle Leerzeilen entfernt. Das macht die Text-Datei wieder sehr unübersichtlich. Gibt es dafür auch eine Lösung? Ich habe es mitlerweile auch geschafft alle Umlaute zu ersetzen. Dabei tritt aber genau das gleiche Problem auf. Leere Zeilen werden verschluckt.

Gruß
Mathias
Bitte warten ..
Mitglied: rubberman
23.04.2011 um 12:41 Uhr
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 ...
01.
@echo off &setlocal 
02.
>C:\test.txt type nul 
03.
for /f "tokens=1* delims=:" %%a in ('ipconfig /all^|findstr /n "^"') do ( 
04.
  set "line=%%b" 
05.
  call :proc 
06.
07.
goto :eof 
08.
 
09.
:proc 
10.
setlocal enabledelayedexpansion 
11.
chcp 1252>nul 
12.
>>C:\test.txt echo(!line! 
13.
endlocal 
14.
goto :eof 
15.
 
Grüße
rubberman
Bitte warten ..
Mitglied: matsahm
23.04.2011 um 14:09 Uhr
Hallo rubberman,

Vielen Dank, das wars. Genau das habe ich gesucht. Eine Frage zum Verständnis der Batch: Was bedeutet die Klammer bei echo(!line!

Gruß
Mathias
Bitte warten ..
Mitglied: rubberman
23.04.2011 um 23:04 Uhr
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
echo.
Warum ich statt dessen meistens
echo(
verwende, kannst du hier 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
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung!

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...