Jump to content

Batch – bestimmte Werte löschen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,
ich habe 3 Textdateien.

Buchstaben.txt = Inhalt ist A B C D E
Zahlen.txt = Inhalt ist 1 2 3 4
Ergebnis.txt = A 1

Gibt es eine Möglichkeit eine Batch-Datei zu erstellen, die in Ergebnis.txt reinschaut und den Wert A aus der Buchstaben.txt und den Wert 1 aus der Zahlen.txt löscht?

Wenn ich in Ergebnis.txt den Wert B 4 stehen habe, soll die Batch aus der Buchstaben.txt das B löschen und aus der Zahlen.txt die 4 .

Habt ihr eine Idee?

Danke euch.

Link zu diesem Kommentar

Moin,

 

wenn man es wirklich will, kriegt man das sicher auch per Batch hin. Da die "Sprache" aber eigentlich keine ist und auch für sowas nie entworfen wurde, wird das aber sehr umständlich. Die PowerShell hingegen ist ausdrücklich auch für komplexere Aufgaben gemacht und hat ein gutes Handling von Variablen, Schleifen, Strings usw.

 

Auf jeden Fall müsstest du für dich erst mal die Logik genauer definieren. Unter welchen exakten Umständen soll exakt was passieren? Mit so einer Definition ist man dann oft schon nah an der Lösung.

 

Gruß, Nils

 

bearbeitet von NilsK
Link zu diesem Kommentar
vor 17 Minuten schrieb okniloso:

Ich strebe diesen Lösungsansatz mit .bat an.

Warum?

vor 17 Minuten schrieb okniloso:

Das Antwort von dem genannten Thread klappt nicht so, wie ich es  mir vorstelle.

Welche Aufgabe willst Du denn wirklich damit lösen?

 

Ich gehe davon aus, dass Du das bereits weißt, aber ich wiederhole es einfach zur Sicherheit nochmal: .bat/.cmd/batch ist ziemlich obsolet und wurde schon vor 'ner ganzen Weile durch die viel mächtigere Powershell ersetzt - besonders wenn es um komplexere Aufgaben geht. Es gibt quasi nix, was Du mit .bat/.cmd/batch machen konntest, was Du nicht genauso oder einfacher und besser mit Powershell machen kannst. Wenn Du vorhast, noch eine Weile in "Windows-Umgebungen unterwegs zu sein", empfehle ich Dir dringend, Dich mit Powershell zu beschäftigen. Das wird Dir das Leben erleichtern und ich bin mir sicher, dass es sich für Dich auszahlen wird.

Link zu diesem Kommentar

Batch ist eine Stapeldatei, sie enthält i.d.R. einen oder mehrere Befehle des Komandointerpretes CMD. Diese Befehle und deren Möglichkeit muss man kennen und beherrschen und auch die Beschränkungen. Prinzipiell gibt es einige Möglichkeiten einer einfachen Textbearbeitung, aber keine der wirklich direkten Dateibearbeitung.

 

 

bearbeitet von lefg
Link zu diesem Kommentar
vor 12 Minuten schrieb okniloso:

Habt ihr noch einen Tipp.

Nimm eine CSV und trenne die Werte in der Datei z.B. mit ";". Dann kannst du aus dem Script im anderen Thread die Variabeln aus der ersten und zweiten Zeile mit Import-CSV einlesen. Bei "$zahlinput = $zahltemp" bzw. "$buchstbeinput = $buchstbetemp" schreibst du dann mit Export-CSV zurück. Allerdings müsstest du dann die äußere Schleife anders beenden.

Link zu diesem Kommentar
vor 36 Minuten schrieb okniloso:

ok. dann mache ich mich mehr mit der Powershell schlauer.

Brav!  ;-):D 

Zitat

Geht denn du Umsetzung, wenn ich mich trotzdem mit der Powershell und den .txt bedine?

Heißt: Ausführung durch Powershell und Werte in der txt

Definitiv.

 

Hier ... nur zum Angeben .... ;-):D

Get-Content -Path .\Ergebnis.txt -OutVariable Ergebnis
Get-Content -Path .\Buchstaben.txt -OutVariable Buchstaben
Get-Content -Path .\Zahlen.txt -OutVariable Zahlen
"$Ergebnis" -match '(\w)\s+(\d)'
$Buchstaben -replace $Matches[1] | Set-Content -Path .\Buchstaben.txt -Force
$Zahlen -replace $Matches[2] | Set-Content -Path .\Zahlen.txt -Force

... mehr ist für den Anfang nicht nötig ...

bearbeitet von BOfH_666
Link zu diesem Kommentar
vor 1 Stunde schrieb BOfH_666:

Brav!  ;-):D 

Definitiv.

 

Hier ... nur zum Angeben .... ;-):D


Get-Content -Path .\Ergebnis.txt -OutVariable Ergebnis
Get-Content -Path .\Buchstaben.txt -OutVariable Buchstaben
Get-Content -Path .\Zahlen.txt -OutVariable Zahlen
"$Ergebnis" -match '(\w)\s+(\d)'
$Buchstaben -replace $Matches[1] | Set-Content -Path .\Buchstaben.txt -Force
$Zahlen -replace $Matches[2] | Set-Content -Path .\Zahlen.txt -Force

... mehr ist für den Anfang nicht nötig ...

Vielen Dank. Ich habe mal ein Screen angehängt. Leider bekomme ich einen Fehler (siehe Screen). Der Wert a aus der Ergebnis.txt steht immer noch in der Buchstaben.txt

Screen.png

vor 3 Minuten schrieb okniloso:

Vielen Dank. Ich habe mal ein Screen angehängt. Leider bekomme ich einen Fehler (siehe Screen). Der Wert a aus der Ergebnis.txt steht immer noch in der Buchstaben.txt

Screen.png

Mein FEHLER sorry. Hat alles geklappt. 1000 Dank.

Link zu diesem Kommentar
vor 36 Minuten schrieb okniloso:

Mein FEHLER sorry. Hat alles geklappt. 1000 Dank.

Dann lösch doch einfach die Screenshots - die helfen dann im Zweifel auch jemand anderem nicht weiter, wenn mal jemand das Gleiche oder was Ähnliches sucht.

 

An diesem kleinen Fehler ist aber schon zu sehen, dass diese Lösung alles andere als robust und fehlertolerant ist. Du solltest also peinlich genau darauf achten, dass alle nötigen Voraussetzungen erfüllt sind oder entsprechend eine gute Fehlerbehandlung einbauen - ganz besonders, wenn Du nicht der Einzige bist, der mit diesem Code arbeiten soll.

Link zu diesem Kommentar
vor 15 Minuten schrieb BOfH_666:

Dann lösch doch einfach die Screenshots - die helfen dann im Zweifel auch jemand anderem nicht weiter, wenn mal jemand das Gleiche oder was Ähnliches sucht.

 

An diesem kleinen Fehler ist aber schon zu sehen, dass diese Lösung alles andere als robust und fehlertolerant ist. Du solltest also peinlich genau darauf achten, dass alle nötigen Voraussetzungen erfüllt sind oder entsprechend eine gute Fehlerbehandlung einbauen - ganz besonders, wenn Du nicht der Einzige bist, der mit diesem Code arbeiten soll.

Alles klar danke. Sag mal, geht das auch mit Worten? WEIL: Wenn ich z.B. rot, gruen, lila, schwarz in der buchstaben.txt und im Ergebnis.txt wird zwar in der zahlen bat der wert 3 rausgenommen in der Buchstaben.bat aber vom schwarz nur das T. Gibt es die Möglichkeit egal wie lang die Zeile ist, den gesamten Wert der Zeile zu löschen?

Screen.png

Link zu diesem Kommentar

Moin,

 

Vorschlag:

 

Entweder du definierst mal, was du eigentlich vorhast. Dann kann man dir passende Vorschläge machen.

Oder (vermutlich viel besser): Du nimmst dir Zeit, dich mit Grundlagen zu befassen und in Ruhe Dinge zu probieren. Dann meldest du dich, wenn du konkrete, beschreibbare Probleme hast.

 

Ein Board wie dieses eignet sich nicht als Lern-Chat.

 

Gruß. Nils

 

Link zu diesem Kommentar
vor 9 Minuten schrieb okniloso:

... Sag mal, geht das auch mit Worten? ....

Das hängt von Deinen Fähigkeiten ab ... aber prinzipiell ja - klar!!!!  ;-):D   ... Ich kann also Nils nur zustimmen. Nimm Dir ein bissl Zeit und schaff Dir die Grundlagen von Powershell drauf. Ein guter Startpunkt könnte die Microsoft Virtual Academy sein. Dort der kostenlose Kurs Getting Started with Microsoft Powershell. Keine Angst, dort geht es zwar um Powershell 3.0 aber die Grundlagen passen auch sehr gut für die aktuelle Windows Version 5.1.

Viel Spaß

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...