Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Grundsätzliches
  Batch suchen ersetzen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Batch suchen ersetzen (2827 mal gelesen)
Sbg Markus
Mitglied



Sehen Sie sich das Profil von Sbg Markus an!   Senden Sie eine Private Message an Sbg Markus  Schreiben Sie einen Gästebucheintrag für Sbg Markus

Beiträge: 516
Registriert: 24.11.2009

erstellt am: 25. Feb. 2013 13:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich möchte in einer bestimmten Datei "C:\Test1.txt" 4 verschiedene Wörter suchen und mit 4 bestimmten Wörtern ersetzen lassen.

Meine Datei schaut so aus aber es klappt nicht. In den Leerzeilen wird "ECHO ist ausgeschaltet (OFF)" eingetragen.

@echo off & setlocal enabledelayedexpansion
echo Das Schaltplanupdate dauert ein paar Minuten

set "Datei=C:\Test1.txt" 
set "t=Temp.tmp" 

set "Suchen1=Personalnummer1"
set "Ersetzen1=192"
set "Suchen2=Personalnummer"
set "Ersetzen2=S192"
set "Suchen3=USERname"
set "Ersetzen3=Sams"
set "Suchen4=EPLANKUERZL"
set "Ersetzen4=STE"

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

:ProcessLine
for /f "tokens=1* delims=:" %%a in ("%Line%") do set "L=%%b"
if not defined L >>"%t%" echo\& goto :eof
set WriteLine1=!L:%Suchen1%=%Ersetzen1%!
set WriteLine2=!WriteLine1:%Suchen2%=%Ersetzen2%!
set WriteLine3=!WriteLine2:%Suchen3%=%Ersetzen3%!
set WriteLine4=!WriteLine3:%Suchen4%=%Ersetzen4%!
>>"%t%" echo !WriteLine4!
goto :eof

:WEITER_IM_BATCH
.......

------------------
---------------

mfg Markus

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2020
Plateia, Canalis
Visual Basic

erstellt am: 25. Feb. 2013 20:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Sbg Markus 10 Unities + Antwort hilfreich

Mal eine grundsätzliche Frage:
Wie soll das ausgeführt werden?
In einem speziellen Texteditor oder auf der Eingabezeile?

Bzw. wenn das wirklich nur die eine Datei ist würde ich das im Textpad oder Ultraedit machen. Könnte man dort auch als Makro speichern ..

[Diese Nachricht wurde von KlaK am 25. Feb. 2013 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Sbg Markus
Mitglied



Sehen Sie sich das Profil von Sbg Markus an!   Senden Sie eine Private Message an Sbg Markus  Schreiben Sie einen Gästebucheintrag für Sbg Markus

Beiträge: 516
Registriert: 24.11.2009

erstellt am: 26. Feb. 2013 07:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Das suchen ersetzen soll über eine Bat ´Datei angestossen werden. Kann man bei dem Ultraedit das suchen ersetzen mit einer Befehlszeile machen ?

------------------
---------------

mfg Markus

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bernd P
Ehrenmitglied V.I.P. h.c.
cook-general



Sehen Sie sich das Profil von Bernd P an!   Senden Sie eine Private Message an Bernd P  Schreiben Sie einen Gästebucheintrag für Bernd P

Beiträge: 3358
Registriert: 07.06.2001

W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365

erstellt am: 26. Feb. 2013 07:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Sbg Markus 10 Unities + Antwort hilfreich

notepad++ kann das über alle geöffneten dateien

------------------
<----- Bitte Systeminfo eintragen, warum siehst du hier. "Warum Einfach es geht auch kompliziert". Schöne Grüsse aus der Steiermark  Bernd P. Sport ist Mord
Rekorde: Scalelist>11727, Fehler>34365, Layerfilter>XXXX

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Comos User
Mitglied



Sehen Sie sich das Profil von Comos User an!   Senden Sie eine Private Message an Comos User  Schreiben Sie einen Gästebucheintrag für Comos User

Beiträge: 112
Registriert: 23.03.2010

erstellt am: 26. Feb. 2013 08:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Sbg Markus 10 Unities + Antwort hilfreich

Moin Markus,

ohne jetzt weiter auf die Diskusion über Editoren einzugehen.
-- Du schreibst --

Zitat:
In den Leerzeilen wird "ECHO ist ausgeschaltet (OFF)" eingetragen.

Ich kann zwar die Stelle nicht sehen an der das passiert vermute aber mal folgendes:

Was in den beabsichtigten Leerzeilen steht, ist die Ausgabe von ECHO ohne Parameter.
Zur Ausgabe einer Leerzeile lautet der Befehl 'ECHO.' (mit Punkt am Ende, ohne Leerzeichen dazwischen)

Gruß
Peter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Praktikum im Bereich operativer Einkauf und Einkaufsqualität ab August 2024 (m/w/d)

Unternehmensbeschreibung

Wir sind bereit Neues zu wagen. Bist Du es auch?

Syntegon Technology ist ein weltweit führender Anbieter von Prozess- und Verpackungstechnik. Rund 6.000 Kolleginnen und Kollegen in mehr als 15 Ländern arbeiten für die Syntegon-Gruppe an intelligenten und nachhaltigen Technologien für die Pharma- und Nahrungsmittelindustrie....

Anzeige ansehenBeschaffungslogistik
KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2020
Plateia, Canalis
Visual Basic

erstellt am: 26. Feb. 2013 20:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Sbg Markus 10 Unities + Antwort hilfreich

Meine Frage bezog sich darauf da einige der Zeilen mir sehr komisch vorkamen
bzw. einfach falsch definiert. Will es mal versuchen zu erklären:

Zitat:
Original erstellt von Sbg Markus:
Code:

@echo off & setlocal enabledelayedexpansion
echo Das Schaltplanupdate dauert ein paar Minuten

set "Datei=C:\Test1.txt" 
sollte wohl set Datei="C:\Test1.txt" heißen, da ansonsten keine Variable bestimmt wird
set "t=Temp.tmp"  dito set t="Temp.tmp"

set "Suchen1=Personalnummer1" siehe oben
set "Ersetzen1=192"          siehe oben
set "Suchen2=Personalnummer"  siehe oben
set "Ersetzen2=S192"          siehe oben
set "Suchen3=USERname"        siehe oben
set "Ersetzen3=Sams"          siehe oben
set "Suchen4=EPLANKUERZL"    siehe oben
set "Ersetzen4=STE"          siehe oben

if exist "%t%" del "%t%"      t war nicht definiert
for /f "delims=" %%i in ('findstr /n $ "%Datei%"') do set "Line=%%i" & call :ProcessLine
      for /F ...  zumindest kenne ich das so, evtl geht es aber auch anders
move "%t%" "%Datei%"
goto :WEITER_IM_BATCH

:ProcessLine
for /f "tokens=1* delims=:" %%a in ("%Line%") do set "L=%%b"        auch hier: set L=%%b
if not defined L >>"%t%" echo\& goto :eof                          L ist nicht definiert
set WriteLine1=!L:%Suchen1%=%Ersetzen1%!
set WriteLine2=!WriteLine1:%Suchen2%=%Ersetzen2%!
set WriteLine3=!WriteLine2:%Suchen3%=%Ersetzen3%!
set WriteLine4=!WriteLine3:%Suchen4%=%Ersetzen4%!
>>"%t%" echo !WriteLine4!
hier wird nur "echo " ausgeführt da WriteLine4 leer sein muß (Variablen nicht definiert)
mit Deiner erhaltenen Meldung "Echo ist ausgeschaltet"

goto :eof

:WEITER_IM_BATCH
.......



Ob es prinzipiell funktionieren könnte - keine Ahnung
Aber wie auch Bernd schrieb, moderne Texteditoren können das viel problemloser ...

Grüße
Klaus 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz