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
GELÖST

Bestimmtes Wort per Batch aus einem Textdokument entfernen

Frage Entwicklung Batch & Shell

Mitglied: bl4ckOut

bl4ckOut (Level 1) - Jetzt verbinden

06.08.2012 um 19:23 Uhr, 3822 Aufrufe, 8 Kommentare

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 :
01.
Name 
02.
TM8573

Jetzt muss "Name" aus dem Textdokument per Batch entfernt werden, (es darf dabei auch keine Leerzeile entstehen), sodass das Dokument folgendermaßen aussieht:

01.
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:

01.
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:
01.
set /p VARIABLE = < C:\alt\model.txt
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.:
01.
ren \Mitarbeiter\keys.html %username%_%PROCESSOR_ARCHITECTURE%_%VARIABLE%.html
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



Mitglied: rubberman
06.08.2012 um 20:04 Uhr
Hallo bl4ckOut, willkommen im Forum.

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
Bitte warten ..
Mitglied: Biber
06.08.2012, aktualisiert 07.08.2012
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)
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
Bitte warten ..
Mitglied: bl4ckOut
06.08.2012 um 21:28 Uhr
Danke euch Beiden erstmal !

Deine Variante a ist super, daran habe ich gar nicht gedacht bzw. wusste gar nicht, dass es diese Möglichkeit auch gibt.

Nun habe ich aber ein neues Problem..
ich wollte ja mit:
01.
set /p VARIABLE = < C:\alt\model.txt
Die Modellnummer "TM8573" ausmodel.txt der VARIABLEN zuordnen.
Allerdings klappt der Befehl in der Batch nicht. Wenn ich jedoch die Befehle nacheinander in der Konsole eingebe, ordnet er die Variable korrekt zu.

In der Batch verändert die Konsole den Befehl folgendermaßen (was ich durch "pause" sehen kann):
01.
C:\Users\...>set /p Variable =  0<C:\alt\model.txt
Das gibt mir ein Rätsel auf, da der Befehl eigentlich korrekt ist.


Über "set VARIABLE" sagt er mir, dass sie nicht definiert sei.

Ist der Befehl falsch ?
Bitte warten ..
Mitglied: Biber
06.08.2012, aktualisiert 07.08.2012
Moin bl4ckOut,

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
Bitte warten ..
Mitglied: bl4ckOut
06.08.2012 um 21:58 Uhr
Super, nochmal vielen Dank.
Ja es klingt halt nach batch.

Das dumme ist jetzt nur, dass in model.txt nach der Modelnummer noch Leerzeichen erstellt, die er natürlich auch als Variable speichert. Wenn ich meine Datei dann umbenennen will, macht er das natürlich nicht wegen dem Syntaxfehler.
Damits deutlich wird:
01.
ren C:\Mitarbeiter\keys.html MustermannMax_AMD64_TM8573   .html
--> Syntaxfehler
Kriegt man die Leerzeichen iwie noch weg ?

Müsste man deine Variante a bearbeiten oder ?
Bitte warten ..
Mitglied: bastla
06.08.2012, aktualisiert um 22:11 Uhr
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
for /f %%i in ('wmic csproduct get name') do set "Variable=%%i"
- zumindest bei meinem Test mit XP genügt das schon ...

... ansonsten zusätzlich zu a):
for /f %%i in ("%Variable%") do set "Variable=%%i"
Grüße
bastla
Bitte warten ..
Mitglied: bl4ckOut
06.08.2012 um 22:15 Uhr
Ihr seid die besten !
Jetzt passt alles perfekt.
Vielen, vielen Dank bastla, Biber und rubberman.

Liebe Grüße

bl4ckOut
Bitte warten ..
Mitglied: pieh-ejdsch
07.08.2012 um 00:16 Uhr
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
01.
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
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...