Bestimmtes Wort per Batch aus einem Textdokument entfernen
Hallo allerseits,
ich weiß, dass meine Frage (hier) schon oft gestellt wurde und ich würde sie nicht nochmals stellen, wenn ich bereits eine Lösung gefunden hätte ! Ich habe bei der Arbeit den ganzen Tag versucht mit verschiedensten Ansätzen, aus vielen Themen, hier im Forum eine Antwort herzuleiten.
Ich habe im Ordner "C:\alt" das Textdokument "model.txt",
mit folgendem Inhalt :
Jetzt muss "Name" aus dem Textdokument per Batch entfernt werden, (es darf dabei auch keine Leerzeile entstehen), sodass das Dokument folgendermaßen aussieht:
Das ist das Ziel !
/ Folgender Hintergrund dazu/
TM8573 steht für die Modellnummer meines Laptops, den ich automatisch in das Textdokument einfügen lasse durch diesen Befehl in der Batch File:
Dabei wird leider "Name" noch in der ersten Zeile eingefügt.
Ich brauche aber die Modellnummer alleine, da ich diese als Variable nutze mit:
Diese Variable nutze ich dann, um verschiedene .html Dokumente umzubenennen. Dies muss ich bei allen Mitarbeitern in meinem Unternehmen machen mit noch anderen Informationen.
Bsp.:
Den Rest des Batch Scripts hab ich allerdings schon fertig.
Lediglich hier hakt es noch !
/ Hintergrund Ende/
Hoffentlich habt ihr mich verstanden.
Der Hintergund ist nicht so wichtig.
Nur zum Verständniss vielleicht, warum ich das brauche.
Grüße
bl4ckOut
ich weiß, dass meine Frage (hier) schon oft gestellt wurde und ich würde sie nicht nochmals stellen, wenn ich bereits eine Lösung gefunden hätte ! Ich habe bei der Arbeit den ganzen Tag versucht mit verschiedensten Ansätzen, aus vielen Themen, hier im Forum eine Antwort herzuleiten.
Ich habe im Ordner "C:\alt" das Textdokument "model.txt",
mit folgendem Inhalt :
Name
TM8573
Jetzt muss "Name" aus dem Textdokument per Batch entfernt werden, (es darf dabei auch keine Leerzeile entstehen), sodass das Dokument folgendermaßen aussieht:
TM8573
Das ist das Ziel !
/ Folgender Hintergrund dazu/
TM8573 steht für die Modellnummer meines Laptops, den ich automatisch in das Textdokument einfügen lasse durch diesen Befehl in der Batch File:
wmic csproduct get name >> C:\alt\model.txt
Dabei wird leider "Name" noch in der ersten Zeile eingefügt.
Ich brauche aber die Modellnummer alleine, da ich diese als Variable nutze mit:
set /p VARIABLE = < C:\alt\model.txt
Bsp.:
ren \Mitarbeiter\keys.html %username%_%PROCESSOR_ARCHITECTURE%_%VARIABLE%.html
Lediglich hier hakt es noch !
/ Hintergrund Ende/
Hoffentlich habt ihr mich verstanden.
Der Hintergund ist nicht so wichtig.
Nur zum Verständniss vielleicht, warum ich das brauche.
Grüße
bl4ckOut
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 189188
Url: https://administrator.de/forum/bestimmtes-wort-per-batch-aus-einem-textdokument-entfernen-189188.html
Ausgedruckt am: 10.04.2025 um 16:04 Uhr
8 Kommentare
Neuester Kommentar
Hallo bl4ckOut, willkommen im Forum.
Ich will dir das Entfernen der ersten Zeile nicht ausreden, aber einfache ginge es mit einer FOR /F Schleife.
Eigentlich könntest du den WMIC Output auch direkt verwursten ...
Grüße
rubberman
Ich will dir das Entfernen der ersten Zeile nicht ausreden, aber einfache ginge es mit einer FOR /F Schleife.
for /f "skip=1 delims=" %%i in ('type "C:\alt\model.txt"') do set "VARIABLE=%%i"
Eigentlich könntest du den WMIC Output auch direkt verwursten ...
Grüße
rubberman
Moin bl4ckOut,
willkommen im Forum.
Von den vielen Lösungsmöglichkeiten wären am einfachsten Variante a):
a) Schreib den Output ohne die Zeile mit "Name" in eine Datei (wenn das sinnvoll ist, die Datei überhaupt zu schreiben)
b) die naheliegende Variante
... funktioniert leider beim Test unter Windows 7 nicht, da der WMIC-Output weder mit der Zeile 2 endet noch mit CRLF
(sondern mit CRCRLF oder ähnlichem Grützkrams).
c) Somit müsstest du es als
...schreiben, um es in die Variable %derNameIs% zu speichern... und das sieht ja schon eher nach Potsdamer Hütchenspielern aus als nach einem wartbaren Oneliner.
Grüße
Biber
willkommen im Forum.
Von den vielen Lösungsmöglichkeiten wären am einfachsten Variante a):
a) Schreib den Output ohne die Zeile mit "Name" in eine Datei (wenn das sinnvoll ist, die Datei überhaupt zu schreiben)
wmic csproduct get name|find /v "Name">>D:\eineDatei.txt
b) die naheliegende Variante
for /f "delims=" %%i in ('wmic csproduct get name') do set "derNameIs=%%i"
... funktioniert leider beim Test unter Windows 7 nicht, da der WMIC-Output weder mit der Zeile 2 endet noch mit CRLF
(sondern mit CRCRLF oder ähnlichem Grützkrams).
c) Somit müsstest du es als
for /f "delims=" %%i in ('wmic csproduct get name^|find /v "Name" ') do @if not defined derNameIs set "derNameIs=%%i"
...schreiben, um es in die Variable %derNameIs% zu speichern... und das sieht ja schon eher nach Potsdamer Hütchenspielern aus als nach einem wartbaren Oneliner.
Grüße
Biber
Moin bl4ckOut,
Und es wird deshalb nicht die Variable "%VARIABLE%" befüllt, sondern die Variable "%VARIABLE{leerzeichen}%"
Lass alle (optisch-ästhetisch durchaus gerechtfertigten) Leerzeichen weg in der SET /P-Zeile.
nich' so:
Sondern :
Auch wenn es ein wenig hölzern und streng katholisch anmutet.
Grüße
Biber
Ist der Befehl falsch ?
Nein, aber er wird halt ohne Murren und Rückfragen buchstabengetreu ausgeführt.Und es wird deshalb nicht die Variable "%VARIABLE%" befüllt, sondern die Variable "%VARIABLE{leerzeichen}%"
Lass alle (optisch-ästhetisch durchaus gerechtfertigten) Leerzeichen weg in der SET /P-Zeile.
nich' so:
set /p VARIABLE = < C:\alt\model.txt
Sondern :
set /p VARIABLE=<C:\alt\model.txt
Auch wenn es ein wenig hölzern und streng katholisch anmutet.
Grüße
Biber
Hallo bl4ckOut und willkommen im Forum auch von mir!
Da ja letztlich der Name in eine Variable soll, würde ich doch zu Variante b) raten - wenn die Namen keine Leerzeichen beinhalten, vereinfacht als
- zumindest bei meinem Test mit XP genügt das schon ...
... ansonsten zusätzlich zu a):
Grüße
bastla
Da ja letztlich der Name in eine Variable soll, würde ich doch zu Variante b) raten - wenn die Namen keine Leerzeichen beinhalten, vereinfacht als
for /f %%i in ('wmic csproduct get name') do set "Variable=%%i"
... ansonsten zusätzlich zu a):
for /f %%i in ("%Variable%") do set "Variable=%%i"
bastla
moin,
falls dieses Grützkrams noch irgenwem zu schaffen macht. ZB. in Win 7.
Mit einer Zweiten Ausgabe und auf csv Getrimmt lässt sich im entsprechenden Token die Ausgabe schön Formatieren.
Test auf der CMD-Line
<code type plain>
for /f "tokens=2 delims=," %i in ('"wmic csproduct get name,version" /Format:csv ^|more +2 ^|findstr /n .') do @echo "%i"
Ohne diesen Abschliessenden Leerzeichenkrams und das dafvorgewurstelle Zeugs.
Gruß Phil
falls dieses Grützkrams noch irgenwem zu schaffen macht. ZB. in Win 7.
Mit einer Zweiten Ausgabe und auf csv Getrimmt lässt sich im entsprechenden Token die Ausgabe schön Formatieren.
Test auf der CMD-Line
<code type plain>
for /f "tokens=2 delims=," %i in ('"wmic csproduct get name,version" /Format:csv ^|more +2 ^|findstr /n .') do @echo "%i"
Ohne diesen Abschliessenden Leerzeichenkrams und das da
Gruß Phil