Leerzeilen aus .txt entfernen
Hallo,
ich habe ein Problem mit dem Befehlt "ipconfig" . Ich will den mit ein paar anderen Infos zusammen in ne .txt bringen und danach für die Unterlagen ausdrucken.
Nur gehen mir die Leerzeilen dabei ziemlich gegen den Strich.
Das Ganze sieht ungefähr so aus.
@echo off
echo. | date | find "Aktuell" >>system.txt
echo. | time | find "Aktuell" >>system.txt
graftabl 1252
(systeminfo & ipconfig /all & reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices")>>system.txt
findstr ^.$ system.txt >system2.txt
start /w notepad /p system2.txt
del system.txt
del system2.txt
Andere Leerzeilen lassen sich problemlos entfernen, nur halt die von der ausgabe von ipconfig nicht .
Kann mir da wer helfen ?
ich habe ein Problem mit dem Befehlt "ipconfig" . Ich will den mit ein paar anderen Infos zusammen in ne .txt bringen und danach für die Unterlagen ausdrucken.
Nur gehen mir die Leerzeilen dabei ziemlich gegen den Strich.
Das Ganze sieht ungefähr so aus.
@echo off
echo. | date | find "Aktuell" >>system.txt
echo. | time | find "Aktuell" >>system.txt
graftabl 1252
(systeminfo & ipconfig /all & reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices")>>system.txt
findstr ^.$ system.txt >system2.txt
start /w notepad /p system2.txt
del system.txt
del system2.txt
Andere Leerzeilen lassen sich problemlos entfernen, nur halt die von der ausgabe von ipconfig nicht .
Kann mir da wer helfen ?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 113316
Url: https://administrator.de/contentid/113316
Ausgedruckt am: 22.11.2024 um 16:11 Uhr
7 Kommentare
Neuester Kommentar
Moin m-ziemann,
nur als Variation, nicht als Alternative zu bastlas Lösung...
An Deiner Lösung empfinde ich aus meiner Erfahrung 2 Details Deines Schnipsels langfristig etwas wartungsunfreundlich bzw von unzureichender spielerischer Leichtigkeit:
Ohne Not-Päd und mit einer Temp-Datei und auf beliebigen Drucker ohne neues Fenster:
[Okay, da wo jetzt Zeilen eingespart wurden, da könnten statt dessen Kommentarzeilen rein...]
Grüße
Biber
nur als Variation, nicht als Alternative zu bastlas Lösung...
An Deiner Lösung empfinde ich aus meiner Erfahrung 2 Details Deines Schnipsels langfristig etwas wartungsunfreundlich bzw von unzureichender spielerischer Leichtigkeit:
- diese Rumeierei mit zwei Temp-Dateien für eine Outputdatei von ~300 Zeilen... und das in Zeiten der knappen Ressourcen..
- dieser Schlenker über das unsägliche NotePöd, mit dem sich zwar per Parameter /p drucken lässt, aber nur auf den Standarddrucker
Ohne Not-Päd und mit einer Temp-Datei und auf beliebigen Drucker ohne neues Fenster:
@echo off & setlocal
Set "outfile=%temp%\sysinfo.txt"
set Regkey="HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices"
:: ggf CHCP xxxx
>%outfile% (
(echo.|date & echo.|time)|find "Aktuell"
(systeminfo & ipconfig /all & reg query %regkey%)|findstr .)
)
Print /d:\\SusisServer\LarasLaser %outfile%
:: ggf CHCP retour
del %outfile%
[Okay, da wo jetzt Zeilen eingespart wurden, da könnten statt dessen Kommentarzeilen rein...]
Grüße
Biber
Hallo m-ziemann!
Stimmt - das überzählige CR bleibt in der Datei und wirkt sich leider beim Ausdruck aus ...
Mit einem zusätzlichen temporären VBScript (verlängert allerdings den Batch um ein Drittel ) sollte sich das aber beheben lassen - als Ergänzung zu Bibers Vorschlag:
Schön finde ich die Lösung zwar auch nicht, aber funktionieren sollte es so ...
Grüße
bastla
Stimmt - das überzählige CR bleibt in der Datei und wirkt sich leider beim Ausdruck aus ...
Mit einem zusätzlichen temporären VBScript (verlängert allerdings den Batch um ein Drittel ) sollte sich das aber beheben lassen - als Ergänzung zu Bibers Vorschlag:
@echo off & setlocal
Set "outfile=%temp%\sysinfo.txt"
set R=%temp%\RemoveDoubleCR.vbs
>%R% echo D=WScript.Arguments(0):Set f=CreateObject("Scripting.FileSystemObject")
>>%R% echo T=f.OpenTextFile(D).ReadAll:f.CreateTextFile(D,True).Write Replace(T,vbCr^&vbCr,vbCr)
set Regkey="HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices"
:: ggf CHCP xxxx
>%outfile% (
(echo.|date & echo.|time)|find "Aktuell"
(systeminfo & ipconfig /all & reg query %regkey%)|findstr .)
)
cscript //nologo %R% %outfile%
start /w notepad /p %outfile%
:: ggf CHCP retour
del %outfile% & del %R%
Grüße
bastla
Hallo m-ziemann!
Die Bedeutung der einzelnen simulierten Tastenbefehle -
markiert zB den gesamten Text (durch Strg-a) - kannst Du hier nachlesen. Um das Prozentzeichen (als Symbol für "Alt") zu erzeugen, musst Du es im Batch verdoppeln (siehe zB Zeile 14).
Für die Pausen (zB
Grüße
bastla
Kann ich mitgeben in welcher Schriftgröße ausgegeben wird?
Etwas Seriöses fällt mir dazu nicht ein, aber Du kannst es (ist auch schon egal ) mit der folgenden "SendKeys"-Bastelei versuchen:@echo off & setlocal
set "outfile=%temp%\sysinfo.txt"
set Schriftgr=8
set R=%temp%\RemoveDoubleCR.vbs
>%R% echo D=WScript.Arguments(0):Set f=CreateObject("Scripting.FileSystemObject")
>>%R% echo T=f.OpenTextFile(D).ReadAll:f.CreateTextFile(D,True).Write Replace(T,vbCr^&vbCr,vbCr)
set C=%temp%\ControlNotepad.vbs
>%C% echo Set WshShell=WScript.CreateObject("WScript.Shell")
>>%C% echo WshShell.Run "notepad "^&WScript.Arguments(0):WScript.Sleep 100
>>%C% echo WshShell.AppActivate "sysinfo.txt - Editor":WScript.Sleep 100
>>%C% echo WshShell.SendKeys "^a":WScript.Sleep 500
>>%C% echo WshShell.SendKeys "%%os{TAB}{TAB}%Schriftgr%{ENTER}":WScript.Sleep 500
>>%C% echo WshShell.SendKeys "^p%%d":WScript.Sleep 2000
>>%C% echo WshShell.AppActivate "sysinfo.txt - Editor":WshShell.SendKeys "%%{F4}"
set Regkey="HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices"
:: ggf CHCP xxxx
>%outfile% (
(echo.|date & echo.|time)|find "Aktuell"
(systeminfo & ipconfig /all & reg query %regkey%)|findstr .)
)
cscript //nologo %R% %outfile%
cscript //nologo %C% %outfile%
:: ggf CHCP retour
del %outfile% & del %R% & del %C%
WshShell.SendKeys "^a"
Für die Pausen (zB
WScript.Sleep 100
) sind die Zeiten in Millisekunden angegeben und ggf etwas (nach oben) anzupassen ...Grüße
bastla