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

Suchen ersetzen per batch in einer TXT im aktuelen ordner vo die Batch liegt.

Frage Entwicklung Batch & Shell

Mitglied: xkinix

xkinix (Level 1) - Jetzt verbinden

04.07.2011 um 08:17 Uhr, 8033 Aufrufe, 11 Kommentare

Habe diesen beitrag gefunden."Suchen ersetzen per batch in einer TXT"

Hallo
Habe diesen beitrag gefunden."Suchen ersetzen per batch in einer TXT" und genau das brauche ich.
Nur kann ich das nicht umsetzen. habe alles in eine Batch datei rein kopiert aber bei mir funktioniert es nicht.

Bin neu in sachen scripte. Brauche eine batch datei die mir am besten im gleichen Ordner alle text datein durchsucht z.b. nacheinem zeichen "%" und durch dieses ersetzt "§".

In diesem Beitrag "Suchen ersetzen per batch in einer TXT" ist genau das brauche ich mit dieser zusetzlichen datei wo mann merere sachen suchen und ersetzen kann.

Ich hoffe das ich das darf.


Hallo maracapuccino und willkommen hier im (erstaunlichen ) Forum!

Das könnte so gehen (und ich meine "gehen", denn bei 1000 Ersetzungspaaren gehe ich nicht von "laufen" aus):

Quelltext | in den Speicher kopieren | drucken

@echo off & setlocal enabledelayedexpansion
set "Datei=D:\Test.txt"
set "Liste=D:\Ersetzungsliste.txt"

set "t=%temp%\text.tmp"
if exist "%t%" del "%t%"
for /f "delims=" %%i in ('findstr /n $ "%Datei%"') do set "Line=%%i" & call :ProcessLine
move "%t%" "%Datei%"
goto :eof

:ProcessLine
for /f "tokens=1* delims=:" %%a in ("%Line%") do set "L=%%b"
if not defined L >>"%t%" echo\& goto :eof
for /f "usebackq tokens=1-2 delims=;" %%s in ("%Liste%") do set "L=!L:%%s=%%t!"
>>"%t%" echo %L%
goto :eof

Für die Datei "Ersetzungsliste.txt" wird, wie in Deinem Vorschlag oben, ";" als Trennzeichen zwischen altem und neuem Wert verwendet - sollte das Semikolon in einem der Werte selbst vorkommen, müsstest Du ein anderes Trennzeichen suchen und in der Datei und in Zeile 14 des Batches (nach "delims=") verwenden.
Mitglied: mathe172
04.07.2011 um 10:22 Uhr
Hallo,

wenn du wirklich alles so in die Batch kopiert hast, kein wunder dass es nicht funktioniert. Bei der Code-Formatierung im Forum(darfst auch du benutzen ) musst du nur den Code in dem grauen Rahmen kopieren-am einfachsten mit dem Quelltext-Link.
Versuch mal nur das zu kopieren:
@echo off & setlocal enabledelayedexpansion 
set "Datei=D:\Test.txt" 
set "Liste=D:\Ersetzungsliste.txt" 
 
set "t=%temp%\text.tmp" 
if exist "%t%" del "%t%" 
for /f "delims=" %%i in ('findstr /n $ "%Datei%"') do set "Line=%%i" & call :ProcessLine 
move "%t%" "%Datei%" 
goto :eof 
 
:ProcessLine 
for /f "tokens=1* delims=:" %%a in ("%Line%") do set "L=%%b" 
if not defined L >>"%t%" echo\& goto :eof 
for /f "usebackq tokens=1-2 delims=;" %%s in ("%Liste%") do set "L=!L:%%s=%%t!" 
>>"%t%" echo %L% 
goto :eof
MfG,
Mathe172
Bitte warten ..
Mitglied: xkinix
04.07.2011 um 15:15 Uhr
Hallo
habe mit dem Quelltext-Link alles markiert eine neue txt datei erzeugt und eingefügt. Habe alles mit dem Win Editor gemacht und wieder mit dem Notepad++ es funktioniert nicht die endung der datei ist .bat, ist das richtig?
Dann mann eine datei hochladen?
Vielen dank
Bitte warten ..
Mitglied: mathe172
04.07.2011 um 17:16 Uhr
Hallo,

wie hast du die Datei gespeichert? Wie schaut das Symbol der Datei aus?
Wenn du die Eigenschaften anschaust, (Rechtsklick-->Eigenschaften) welcher Dateityp wird angegeben?
Und wenn es eine Batch ist, was passiert, wenn du sie auf die Konsole (Win+R-->cmd.exe) ziehst und Enter drückst?

Mathe172
Bitte warten ..
Mitglied: xkinix
04.07.2011 um 18:06 Uhr
Hallo
Das Symbol der Datei sin Zahnräder.
Unter Eigenschaften steht das es eine Windows-Batchdatei (.bat) ist.
Unter der Konsole (Win+R-->cmd.exe) habe ich die meldung "Das System kann die angegebene Datei nicht finden."
Die 2 text dateien mit den ensprechenden bezeichnungen sind genau da auf D: wo sie sen solle.

In Der "Ersetzungsliste.txt" steht nur
r;ß
2;ö
zu erst suchen;ersetzen
ist das richtig,?
in der "Test.txt" datei steht nur ein "r" und eine "2" drinnen.
ist das richtig?
Kini
Bitte warten ..
Mitglied: bastla
04.07.2011 um 18:23 Uhr
Hallo xkinix und willkommen im Forum!

Soferne Du nur eine Zeile in der "Test.txt" hast und diese nicht mit einer Zeilenschaltung endet, wird der Batch in der obigen Form tatsächlich nicht funktionieren - ändere daher die Zeile
for /f "delims=" %%i in ('findstr /n $ "%Datei%"') do set "Line=%%i" & call :ProcessLine
auf
for /f "delims=" %%i in ('findstr /n "^" "%Datei%"') do set "Line=%%i" & call :ProcessLine
Hintergrund: Jede Zeile hat einen Anfang ("^"), aber nicht jede ein Ende ($) (siehe zur Bedeutung der Suchbegriffe "findstr /?") ...

Grüße
bastla
Bitte warten ..
Mitglied: xkinix
04.07.2011 um 18:33 Uhr
Vielen dank
es funktioniert.

Wie kann mann alle text dateine eines besimten ortner durchsuchen/ersetzen ohne das mann immer wieder den Dateinamen eintragen muß?

nochmal vielen dank
Bitte warten ..
Mitglied: bastla
04.07.2011 um 18:41 Uhr
Hallo xkinix!
Wie kann mann alle text dateine eines besimten ortner durchsuchen/ersetzen
In diesem Fall einfach noch eine weitere Schleife verwenden - ungetestet etwa so:
01.
@echo off & setlocal enabledelayedexpansion  
02.
set "Ordner=D:\" 
03.
set "Liste=D:\Ersetzungsliste.txt"  
04.
 
05.
pushd "%Ordner%" 
06.
set "t=%temp%\text.tmp"  
07.
for /f "delims=" %%d in ('dir /b *.txt') do ( 
08.
    del "%t%" 2>nul 
09.
    for /f "delims=" %%i in ('findstr /n "^" "%%d"') do set "Line=%%i" & call :ProcessLine 
10.
    move "%t%" "%%d" 
11.
12.
popd 
13.
goto :eof  
14.
 
15.
:ProcessLine 
16.
for /f "tokens=1* delims=:" %%a in ("%Line%") do set "L=%%b" 
17.
if not defined L >>"%t%" echo\& goto :eof 
18.
for /f "usebackq tokens=1-2 delims=;" %%s in ("%Liste%") do set "L=!L:%%s=%%t!" 
19.
>>"%t%" echo %L% 
20.
goto :eof
Bitte beachten: Wenn die Ersetzungsliste ebenfalls im angesprochenen Ordner liegt, sollte sie nicht den Dateityp ".txt" haben, da sie ansonsten auch "bearbeitet" würde ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
04.07.2011 um 18:45 Uhr
Nachtrag: Variablennamen der jeweiligen Datei noch verändert (auf %%d)

Grüße
bastla
Bitte warten ..
Mitglied: xkinix
04.07.2011 um 19:00 Uhr
Zitat von bastla:
Nachtrag: Variablennamen der jeweiligen Datei noch verändert (auf %%d)

Grüße
bastla
Muss ich noch was endern,
Habe den Code in meine datei eingefügt und über die Console Laufen lassen.
Das wurde aus gegeben.
1datei wurde verschoben.

Ich mach mir einen Ordner auf D:\test
in diesem ortner befinden sich 2 oder merere .txt dateien.
Muss ich das so endern "set "Ordner=D:\test""???
Bitte warten ..
Mitglied: bastla
04.07.2011 um 19:09 Uhr
Hallo xkinix!

Ich habe inzwischen den letzten Stand des Batches (allerdings mit geändertem Speicherort der "Ersetzungsliste.txt" - diese darf, wie oben erwähnt, entweder nicht den Typ ".txt" haben oder nicht im vorgegebenen Ordner, also im Beispiel "D:\", liegen) erfolgreich getestet ...
Habe den Code in meine datei eingefügt und über die Console Laufen lassen.
Nur zur Sicherheit: Der Code sollte der alleinige Inhalt der Batch-Datei sein ...
Die Änderung des Ordnerpfades in "D:\test" in Zeile 2 wäre ok - die Zeile müsste dann so aussehen:
set "Ordner=D:\test"
Grüße
bastla
Bitte warten ..
Mitglied: xkinix
04.07.2011 um 19:24 Uhr
vielen dank
alles funktioniert.

Habe viele untertitel dateien und die haben sonderzeichen und mann kann schlecht lesen.
Jetzt mache ich das in einem rutsch.
Danke

Habe doch noch was.

Wie würde die syntaxe lauten für den aktuelen Ortner?
set "Ordner=D:\test"
set "Liste=D:\test\Ersetzungsliste.xtx" habe die endung meiner Ersetzungsliste geendert damit sie nicht kaut gemacht wird.

Trotz allem vielen dank
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch - Datei aus Ordner einlesen mit Ausnahmen! (4)

Frage von Daedrafaction zum Thema Batch & Shell ...

Batch & Shell
Suchen, Ersetzen und Entfernen von Dateiinhalten auf Textbasis (1)

Frage von DanteManor zum Thema Batch & Shell ...

Batch & Shell
gelöst Suchen und Ersetzen mehrerer Suchbegriffe per Batch (4)

Frage von makroll10 zum Thema Batch & Shell ...

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

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

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

Frage von Unwichtig zum Thema Netzwerkmanagement ...