Textdatei mit CMD bearbeiten?
Hallo,
ich habe ein Problem: Ich habe eine Text Datei mit unwichtigem Inhalt, und irgendwo erscheint EmpfaengerName:/12792750717/ Jetzt möchte ich automatisiert alle neuner und siebener mit einer Random Zahl ersetzen. Kann mir da jemand helfen?
Vielen Dank,
Fabian
4 Antworten
Das Problem an Dateien bearbeiten ist, dass du einer Datei nur Zeilen hinzufügen kannst. Du musst die Datei also komplett neu schreiben, nur mit ein paar Werten ausgetauscht:
@echo off & setlocal enableDelayedExpansion
set "search[0]=7"
set "search[1]=9"
set "oldfile=file.txt"
set "newfile=new.txt"
if exist %newfile% (
CHOICE /M "%newfile% existiert bereits. Ueberschreiben?"
if !errorlevel! EQU 1 ( del %newfile% ) else ( exit )
)
for /f "delims=" %%i in (%oldfile%) do (
set "line=%%i"
set "line=!line:%search[0]%=%random:~0,1%!
echo !line:%search[1]%=%random:~0,1%!
)>> %newfile%
oldfile und newfile musst du auf deine Dateinamen anpassen.
Du kannst am Ende natürlich auch die %oldfile% löschen und die %newfile% nach dem alten Dateinamen umbenennen, dann hast du nur eine Datei mit angepassten Werten und altem Dateinamen.
~Tim
echo: ist im Prinzip das gleiche wie echo. nur etwas schneller . da hatte Dave Bennham (BatchGuru) mal doziert echo. versucht wohl erstmal einen Dateizugriff verzeichniss/. , während echo: ähnlich call:label den Doppelpunkt als Batchintern betrachtet. soviel zur Theorie ich hab's nicht getestet. Wenns von dbennham kommt darf man davon ausgehen das es verifiziert ist...
Anonsten kannst du statt des Punktes so ziemlich jeden Schrott benutzen echo/ /=+[]{}();, geht alles.
Mir ist zu dem Thema gerade noch was untergekommen:
https://www.dostips.com/forum/viewtopic.php?f=3&t=774
Hab mir eben mal alle 3 Seiten in dem Thread durchgelesen ... ich glaube ich kann jetzt den einfachsten und ersten Batch Befehl den ich kannte nicht mehr ruhigen Gewissens benutzen ...
lass das nicht unsere MöchtergernBatchHackerz lesen XD. Die bauen damit Atombomben gegen ihre Schulrechner...
Wenn dbenham und Co zu Werke gehen ist das meiste zwar interessant aber auch hoch theretisch, trotzdem hatte ich auch schon Fälle wo ich mit dickem Kopf vorm Rechner saß. Offensichtlich nichts falsch und trotzdem ne Fehlermeldung gestern lief das doch noch...
test.cmd
if [%1]==[] ( echo zum Starten ziehe ziehe eine datei auf %~nx0
pause
exit /b
)
echo blah und blub %1
pause
Probiert geht. hm dann wars auf einmal wieder falsch... Bis ich dahinter gestiegen bin das ich die Datei auf Pastebin hatte und 2mal runtergeladen hatte. nun sah der Batchname so aus: test(1).cmd
Fix: entweder man setzt die Variable %~nx0 in Quotes oder man arbeitet mit goto um mögliche Dateinamen mit Klammern aus einem KlammerBlock rauszuhalten... sowas kann einem auch in einem do-block auf die Füße fallen, wo man nicht mal mit goto "davonlaufen" kann.
Klingt nach einer perfekten Übung für ein bisschen C-Programmierung!
Viele Programmiersprachen können das..
C, C++, C#, Java F# ..
Das wird in fast allen gängigen Programmiersprachen möglich sein. Nimm einfach deine liebste☺️
ich bin mal fies mit Dir:
file.txt sähe so aus :):
und sollte auch so strukturiert bleiben...
mit Deiner Lösung ist leider auch die Telefonnummer und andere zahlen im Text betroffen... O.o
ich klau Dir nicht Deine Lösung, mache aber einem kleines update:
jetzt bleibt alles wie es ist außer der einen Zeile...