Bestimmtes Wort aus einer Textdatei löschen

Mitglied: ITSchlumpf

ITSchlumpf (Level 1) - Jetzt verbinden

13.10.2011, aktualisiert 18.10.2012, 4891 Aufrufe, 18 Kommentare

Hallo zusammen,

ich möchte mittels Batch bestimmte Zeilen aus einer Textdatei löschen. Habe hier auch schon paar sachen gesehen, aber irgendwie noch nichts was zu meinem Problem passt.

Der Hintergrund ist, dass ich mittels Batch eine Textdatei auslese in welcher Computernamen stehen und dort dann Lizenzschlüssel auslese. Jetzt möchte ich aber nicht jedesmal bei der Ausführung des Skriptes alle Rechner abfragen sondern nur die, die ich noch nicht ausgelesen habe.
Deswegen würde ich die erfolgreich ausgelesen Rechner gerne aus der Liste löschen. Somit möchte ich auch verhindern, dass in meiner Excel-Datei Rechner+Lizenz 2 mal auftauchen.

Vielen dank schonmal für eure Tipps :) face-smile

Grüße
Schlumpf
Mitglied: 60730
60730 (Level 5)
13.10.2011 um 16:56 Uhr
Servus,

aber irgendwie noch nichts was zu meinem Problem passt

So was aber auch..

(OT)
Scheibenkleister mittlerweile ist es hier genauso schlimm, wie im MCSE Forum - aus dem ich mich vor Jahren abgemeldet hab, weil da nur noch Anspruchsvolle Fragen von "Kollegen" gestellt wurden, die wohl niemals nie einen MSCx machen werden.
(/OT)

Wer die Suchfunktion nicht benutzt und dieses Forum mit Banalitäten beschmutzt
wenn einem gutes widerfährt, dass ist dann einen :-( face-sad Wenig anspruchsvoll wert.
Bitte warten ..
Mitglied: Skyemugen
13.10.2011 um 17:51 Uhr
Aloha T-Mo,

da ich gerade Twix futter *mampf*, mach ich eben mal zwei daraus ...

ich möchte demnächst jedes Mal 5 Euronen erhalten, wenn ein TE behauptet, er habe nichts passendes zu seinem Problem gerade in Sachen Batch gefunden ... nie wieder arbeiten müssen ;-) face-wink

greetz André
Bitte warten ..
Mitglied: Friemler
13.10.2011 um 18:12 Uhr
Hallo ITSchlumpf,

ich nehme zu deinen Gunsten mal an, dass du in Batchscript einfach nicht fit genug bist, um bestehende Lösungen auf dein Problemchen umzustricken. Deshalb hier die Skizze einer Lösung:
Dir bleibt jetzt noch die Aufgabe, das Unterprogramm CheckLic mit Leben zu füllen. Je nachdem ob das Auslesen des Lizenzkeys erfolgreich war oder nicht, muss das Unterprogramm mit exit /b x entweder 0 (erfolgreich) oder einen von 0 verschiedenen Wert, z.B. 1, (nicht erfolgreich) zurück liefern. Bei "nicht erfolgreich" wird der aktuelle Rechnername in eine temporäre Datei geschrieben, durch die zum Schluss die originale Datei ersetzt wird.

Gruß
Friemler
Bitte warten ..
Mitglied: bastla
13.10.2011 um 20:16 Uhr
@Friemler
Wozu eigentlich das "/y" beim "move"?
Und außerdem: Warum nicht ein simples "findstr /v" (ggf mit "/i")?

Grüße
bastla
Bitte warten ..
Mitglied: ITSchlumpf
14.10.2011 um 08:12 Uhr
Hallo Friemler,

du hast mein Problem richtig erkannt. Ich bin ein Batch - Neuling und versuche mich da Schritt für Schritt einzuarbeiten aber ist halt nicht immer so einfach. Zudem ich versuche ja die Scripte anderer umzubauen aber wenn ich es eben nicht hinbekommen frag ich eben nach.
Dafür bin ich ja auch in so einem Forum angemeldet. Aber okay, wer nicht helfen möchte, brauch ja eig auch nichts dazu schreiben.

So thema wechsel. Danke für den Code. Werd ihn gleich mal testen.
@bastla:
Hast du sowas gemeint mit find? Sowas hab ich hier im Forum gefunden, aber leider macht es noch nicht ganz das was ich möchte bzw. es macht garnichts.
Naja dann werd ich mal weiter testen.

Vielen dank schonmal :) face-smile

Gruß
Schlumpf
Bitte warten ..
Mitglied: Skyemugen
14.10.2011 um 08:22 Uhr
Zitat von @ITSchlumpf:
du hast mein Problem richtig erkannt. Ich bin ein Batch - Neuling und versuche mich da Schritt für Schritt einzuarbeiten aber ist halt nicht immer so einfach. Zudem ich versuche ja die Scripte anderer umzubauen aber wenn ich es eben nicht hinbekommen frag ich eben nach.
Falsch! Du fragst nicht nach, sondern fragst vom Fundament aus. Wenn du nicht weiterkommst, dann solltest du bereits einen Code haben, wo du glaubst, daran könnte man weiterarbeiten und auch nur dann - denn so neu bist du auch nicht mehr - würden Leute wie T-Mo und ich dir weiterhelfen ... wenn du aber nur mit plain-Text ankommst und von Grund auf hier etwas geschenkt bekommen willst, obwohl wir so viele Threads mit so vielen Erklärungen haben - zu einem dauerdurchgekauten Thema, dann tut es mir leid aber dann darfst du nicht viel erwarten.

Dafür bin ich ja auch in so einem Forum angemeldet. Aber okay, wer nicht helfen möchte, brauch ja eig auch nichts dazu schreiben.
Stimmt, weil wir so ungern helfen ...

P.S.:
... ohne Zollzeichen um die Variable bekommst du eine aussagekräftige Fehlermeldung: FIND: Parameterformat falsch und mit definiertem Inhalt der Variable nimmt er die Zeilen auch raus ...

Bitte warten ..
Mitglied: Friemler
14.10.2011 um 09:37 Uhr
Zitat von @bastla:
Wozu eigentlich das "/y" beim "move"?
Öhm, davon hatte ich gerade eins zuviel ;-) face-wink

Zitat von @bastla:
Und außerdem: Warum nicht ein simples "findstr /v" (ggf mit "/i")?
Verstehe ich in diesem Zusammenhang nicht.

Gruß
Friemler
Bitte warten ..
Mitglied: bastla
14.10.2011 um 10:36 Uhr
@Friemler
Verstehe ich in diesem Zusammenhang nicht.
Je nach Ablauf (die diesbezügliche Beschreibung durch den TO hat noch Potenzial ;-) face-wink) ginge es doch eigentlich nur darum, jeweils die Zeile des entsprechenden Rechners aus der Datei zu entfernen - also eigentlich (unter Annahme eines Trennzeichens ";"):
Grüße
bastla
Bitte warten ..
Mitglied: 60730
60730 (Level 5)
14.10.2011 um 11:24 Uhr
Last Orders please...

Da unser IT Schlumpf sich wohl mittlerweile (welche Farbe haben die denn) geärgert hat, sein Feedback wohl erst dann kommt, wenn der Weihnachtsmann mit dem Hansi Hintermsee Schuhpladdeln geht...
Spiele ich mal ausnahmsweise den heiligen Netzwerg. In der Hoffnung, dass wir in bälde einen ITschlumpfarbenen Siemenslufthaken unter der Nummer stehen haben.

Daten löschen - warum überhaupt das versteh ich nicht.
@me myselfandI
ITSchlumpf==cooler Nick muß ich mir merken. "ich hab nix gefunden"=="ich hab nix gemacht" :-( face-sad Acho Pfade und Dateinamen muß man sich wie in den anderen fast ähnlichen, aber nicht gganz passenden Treffern auch anpassen - oder vom Profi anpassen lassen.

Amen
Bitte warten ..
Mitglied: ITSchlumpf
14.10.2011 um 11:42 Uhr
@Timo: Warum inhalte der Textdatei löschen? Ganz einfach.
Mein Skript läuft momentan so ab, dass ich eine Textdatei mit Rechnernamen habe welche ausglesen wird und dann überprüft wird, ob auf dem Rechner Programm A oder B läuft und dann die Lizenz hierfür ausgelesen wird.
Wenn ich das Skript aber mehrmals durchlaufen lasse, da ich nicht auf anhieb alle Rechner erwische zwecks Zeitverschiebung etc., schreibt mir das Skript die Lizenzen doppelt in die Excel datei.
Deswegen war der Gedanken dahinter, ich lösche die erfolgreichen raus und muss dann nur noch die Abfragen, die noch nicht durchgelaufen sind.
Achja hatte heute morgen leider noch was anderes zu tun und konnte deswegen nicht ständig testen und probieren ;)

@bastla: Ansatz sieht gut aus, aber dann löscht er mir ja nicht die Daten aus der Textdatei raus sondern schreibt sie nur in eine andere rein. Oder sehe/teste ich das falsch?

@Friemler: Das sieht cool aus, ich weiß nur noch nicht ganz wie ich das richtig einbauen kann. Muss ich wohl noch etwas testen und rumspielen ;)

Vielen danke auf jedenfall für die ganze Hilfe ;)

Gruß
Schlumpf
Bitte warten ..
Mitglied: Skyemugen
14.10.2011, aktualisiert 18.10.2012
Zitat von @ITSchlumpf:
@bastla: Ansatz sieht gut aus, aber dann löscht er mir ja nicht die Daten aus der Textdatei raus sondern schreibt sie nur in eine andere rein. Oder sehe/teste ich das falsch?
.... ... poc zu anspruchsvoll? bastlas Weg ist kürzer, ich hielt mich an deinen Code, der ja gar nichts macht ... und beide tun dasselbe ... ich bezweifle, dass du wirklich was testest ...

kann mir bastla mal sein noch nicht vergebenes nicht anspruchsvoll bitte leihen ...

Das sieht cool aus

seit wann sehen codes cool aus, gibt's hier B-Noten für den Style oder wie?
Bitte warten ..
Mitglied: 60730
60730 (Level 5)
14.10.2011 um 11:52 Uhr
Zitat von @ITSchlumpf:
@Timo: Warum inhalte der Textdatei löschen? Ganz einfach.
Mein Skript

  • sorry - aber dein Skript sehe ich nicht - muß ich die Augenklappe hochheben, oder du das Script hier reinmalen?
Wenn ich das Skript aber mehrmals durchlaufen lasse, da ich nicht auf anhieb alle Rechner erwische zwecks Zeitverschiebung etc., schreibt mir das Skript die Lizenzen doppelt in die Excel datei.
  • wofür denkst du, habe ich dir u.a diese Zeile
hingemalt? echo %%a hat keine Seriennummer steht für Hallo mach was mit "mir" was auch immer - siehe ich Augenklappe oder du tipps.........

Deswegen war der Gedanken dahinter, ich lösche die erfolgreichen raus und muss dann nur noch die Abfragen, die noch nicht durchgelaufen sind.
  • Warum löschen? Und dann ausgerechnet die "Erfolgreichen?"

@bastla: Ansatz sieht gut aus, aber dann löscht er mir ja nicht die Daten aus der Textdatei raus sondern schreibt sie nur in eine andere rein. Oder sehe/teste ich das falsch?
Du kannst "in Batch ohne Tricks" keine Zeilen löschen - das muß man mit "Tricks" machen und der Bastlasche Trick ist nur ein anderer Weg

Vielen danke auf jedenfall für die ganze Hilfe ;)

Gruß
Schlumpf

zurück und bitte - lese dir alle Antworten durch - so Seitenhiebe wie (die diesbezügliche Beschreibung durch den TO hat noch Potenzial ;-) face-wink ) haben "leider" eine Daseinsberechtigung.
Bitte warten ..
Mitglied: ITSchlumpf
14.10.2011 um 12:15 Uhr
@Timo:
Das habe ich bisher als Grundlage genommen und wollte eben noch die Zusatzfunktion des löschens der Textdatei falls erfolgreich. Also ich habe schon was gemacht nur bei diesem Thema bin ich dann hengengeblieben.
Bitte warten ..
Mitglied: 60730
60730 (Level 5)
14.10.2011 um 12:29 Uhr
Au Backe...

ping -n 2 %eeepc% |find "Empfangen = 2"
ist doch doppelter Bullshit...

Du fragst vorher nach enu oder ger ab - dann aber immer nach empfangen, was ENU niemals nie nicht liefert.
TTL liefert sogar ein Lampukisches XP...

if exist "\\%eeepc%\C$\TwinCAT\OPC\Server4\TcOPCCfg.exe" goto Beckhoffeng
if exist "\\%eeepc%\C$\Program Files\Softing\OPCTray\OPCTray.exe" (goto Softingeng) else (goto eof2)

  • keine Ahnung, was das soll.. Wenn die Kiste TwinCAT hat, dann hat die niemals nie nicht kein OPCTray?
if exist "\\%eeepc%\C$\Progra~1\Softing\OPCTray\OPCTray.exe"
liefert - x64 sehe ich eh nirgendwo - immer den Pfad, den du willst - egal ob enu/deu oder Lampukisch


"Eigentlich" gings dir u.a um Zeile 55 - aber ehrlich, das würde ich mir nicht antun und das Ding mal locker um die hälfte eindampfen, das kann doch ohne REM keiner warten..
Siehe deine Zeile 46 - Beckhoffeng da rennt er immer hin....

do if not "%%i"=="" findstr /c:"%eeepc%, %%i, "Softing.csv" ||echo %eeepc%, %%i, %date%>> Softing.csv

Edit

nochmal....

for /f "tokens=1,2 delims=;" %%a in (C:\script\tabellen\tabelle.txt) do if "%%b" == "" echo %%a hat keine Seriennummer
nenn das meinetwegen:
for /f "tokens=1,2 delims=;" %%a in (Beckhoff.csv) do if "%%b" == "" call Maineng %%a
/edit
Bitte warten ..
Mitglied: bastla
14.10.2011 um 12:36 Uhr
[OT]@skye
kann mir bastla mal sein noch nicht vergebenes nicht anspruchsvoll bitte leihen ...
Er konnte ... ;-) face-wink

Grüße
bastla
[/OT]
Bitte warten ..
Mitglied: ITSchlumpf
14.10.2011 um 12:42 Uhr
ist doch doppelter Bullshit...
Ähm du Timo den doppelten Bullshit hast du mal geschrieben ;-) face-wink

if exist "\\%eeepc%\C$\TwinCAT\OPC\Server4\TcOPCCfg.exe" goto Beckhoffeng
if exist "\\%eeepc%\C$\Program Files\Softing\OPCTray\OPCTray.exe" (goto Softingeng) else (goto eof2)

Des goto eof2 hab ich drinne, falls der client keins von beiden hat. Sonst läuft der mir in Beckhoffeng und steht ne weile fest bis zum Time-out.

Die EEEPCs sind alle 32-Bit und werden auch 32 Bit bleiben von daher habe ich garnicht an x64 gedacht aber das mit dem Progra~1 ist auch noch ne gute Idee.
Also das Programm läuft soweit durch und gibt auch die richtigen Daten aus.

Klar überarbeiten lässt es sich aufjedenfall noch und auch kürzen aber für mich als leihen war es so logisch.

Die Kisten haben immer nur eins von beidem installiert da die Programme nicht gemeinsam auf einer Kiste laufen wollen.

Gruß
Schlumpf
Bitte warten ..
Mitglied: 60730
60730 (Level 5)
14.10.2011 um 13:13 Uhr
Zitat von @ITSchlumpf:
>> ist doch doppelter Bullshit...
Ähm du Timo den doppelten Bullshit hast du mal geschrieben ;-) face-wink

tja - auch ich ...

In meinen Augen kann das ganze Ding so eingedampft werden.

Ist doch Jacke wie Hose, wie der Pfad heisst oder ob der vorhanden ist oder nicht - der ausgelesene Rekkey ist doch derselber und wenn er eh nix findet - schrebt er auch nix.
Warum du aber eine csv mit "wert"leerzeichen; "wert"leerzeichen; Datum befüllst...Änder das - wenn das wirklich sein muß - ich nutze immer wert;wert.


Auch der doppelte sc \\%1 stop RemoteRegistry ist mal "zur Sicherheit" drin geblieben - gefällt mir aber überhaupt nicht - Im Zweifel schadet der ohne Adminrechte eh nix und fährt einer die Kiste runter isser eh wieder aus... (Wenn er denn manuell gestartet werden muß)

Du mußt nur noch dafür sorgen, dass alle Kisten entweder in der einen, oder in der anderen csv stehen - du schreibst ja - einer von beiden kann nur installiert sein.
Eine Kiste, die bereits einen Wert eingetragen hat, kann ja in der anderen demzufplge nicht mehr drin sein.

Gruß

Edit
Ich hab das mal umgestrickt - die Rechner.txt wird im Step 1 umbenamst und in der ersten Schleife abgearbeitet - sollte die einen Erfolg liefert gibt es dann wieder eine rechner.txt (ohne den getroffenen Rechner) - die dann natürlich nicht mehr abgearbeitet wird.
Kann sein, dass ich dem Script dabei ein Bein gestellt habe.

Bitte warten ..
Mitglied: ITSchlumpf
14.10.2011 um 13:41 Uhr
Okay dankeschön. Dann teste ich das mal noch ne weile mit dem. Muss aber glaub noch das ein oder andere anpassen :) face-smile

Vielen dank nochmal :) face-smile

Gruß

Schlumpf
Bitte warten ..
Heiß diskutierte Inhalte
HTML
Ich brauche dringend Hilfe !
gelöst JulianpustVor 18 StundenFrageHTML16 Kommentare

Hallo erstmal, ich habe großen Mist gebaut in der Firma wo ich gerade mal 2 Tage arbeite. Was ist passiert: Ich sollte von Gmail ...

Windows 10
Windows 10 schickt lokale Anfragen an das Gateway - was tun?
gelöst runthegaunzVor 1 TagFrageWindows 1015 Kommentare

Hallo! Ich bin vor ein paar Tagen wieder von Linux auf Windows umgestiegen. Ich hab die Windows 10 Version 20H2 installiert, wurde von Windows ...

Switche und Hubs
23 Cisco Switch einrichten - Wie am einfachsten?
gelöst Freak-On-SiliconVor 1 TagFrageSwitche und Hubs18 Kommentare

Hallo; Ich habe hier 4stk Cisco SX350X-24 9Stk Cisco SG350X-48P 10Stk Cisco SG350X-48 Diese werden aufgeteilt auf 9 Racks, und ersetzen alte HP Switches. ...

Exchange Server
Aktuelle Exchange Sicherheitslücke
jojo0411Vor 1 TagAllgemeinExchange Server11 Kommentare

Hallo Leute, Momentan gibt es da wieder einmal ein schönes neues Thema. Sehe ich das richtig das ich mit Exchange 2016 und CU 19 ...

Windows Server
Windows Firewall: Alle öffentliche IPs sperren bis auf eine
SabSchapVor 1 TagFrageWindows Server7 Kommentare

Hallo, wir haben einen Windows 2019 Server. Wir nutzen diesen als Webserver. Nun haben wir die Webadresse www.test.de und möchten diese für alle öffentlichen ...

Hardware
Fritzbox 7590 ändert selbständig die FTP-Adresse nach ca. 24h
Wicky1Vor 1 TagFrageHardware15 Kommentare

Hallöchen, ich habe da ein sehr kurioses Problemchen mit meiner Fritzbox. Doch erst mal eine kurze Beschreibung des Aufbaus: - Fritzbox 7590 (1&1 Edition) ...

Netzwerke
Smarthome Heimnetzwerk absichern
hell.wienVor 1 TagFrageNetzwerke12 Kommentare

Hallo. Ich mach mir gerade gedanken wie ich meine neue Wohnung sicher mache Überischthalber zur Hardware: Vorhanden: Modem APU4D4 Cisco SG250X-24P Mikrotik cAP ac ...

Windows Server
Server-Internetverbindung kurz trennen und wieder aktivieren
gelöst imebroVor 21 StundenFrageWindows Server11 Kommentare

Hallo, wir haben im Moment fast täglich immer wieder Ausfälle unserer Internetverbindung. Unser Provider sagt, dass er kein Problem feststellen kann. Aber wenn vom ...