Dateiinhalt suchen ersetzen meldung per eMail
Ich nehme Bezug auf einen anderen Beitrag von mir "Dateien im Ordner auslesen und per email senden"!
Hallo
Das Script, was ich einsetze funktioniert einwandfrei! Vielen Dank noch mal an biber, basta und co.
Jetzt möchte ich das Script gerne erweitern/ändern, da ich gesehen habe, dass man auch den Inhalt einer Datei durch
Batch manipulieren kann.
Die Dateien, die geändert werden müssen haben nur eine Zeile. Am Anfang dieser Zeile steht entweder INSERT oder
UPDATE. Da diese Dateien sich im Fehlerordner befinden haben diese Dateien IMMER UPDATE. Jetzt muss ich dieses
UPDATE immer manuell ändern in INSERT. Jetzt ist meine Idee, dass dieses automatisch geht und ich über diese
Änderung nur noch per eMail benachrichtigt werde.
Hier mal mein Script aus dem anderen Beitrag "Dateien im Ordner auslesen und per email senden":
Wo und was muss ich jetzt ändern, dass die Datei(en) geändert werden und ich eine Benachrichtigung erhalte.
Ist dieser Code so an sich richtig???
Vielen Dank noch mal für die Hilfe
Webbi1976
Hallo
Das Script, was ich einsetze funktioniert einwandfrei! Vielen Dank noch mal an biber, basta und co.
Jetzt möchte ich das Script gerne erweitern/ändern, da ich gesehen habe, dass man auch den Inhalt einer Datei durch
Batch manipulieren kann.
Die Dateien, die geändert werden müssen haben nur eine Zeile. Am Anfang dieser Zeile steht entweder INSERT oder
UPDATE. Da diese Dateien sich im Fehlerordner befinden haben diese Dateien IMMER UPDATE. Jetzt muss ich dieses
UPDATE immer manuell ändern in INSERT. Jetzt ist meine Idee, dass dieses automatisch geht und ich über diese
Änderung nur noch per eMail benachrichtigt werde.
Hier mal mein Script aus dem anderen Beitrag "Dateien im Ordner auslesen und per email senden":
@echo off & setlocal
Set "Quell=C:Inetpubftprootsapxiprodfehler"
Set message=SAPXI-FEHLER am %date% um %time% entdeckt
Set "HINWEISTEXT02=Bitte die Fehler schnell beseitigen!"
Set "HINWEISTEXT03=MfG der Fehler Support"
Set "HINWEISTEXT04=--------------------------"
set /a Anzahl=0
set "bodytemp=%Quell%bodytemp.txt"
set "body=%Quell%body.txt"
if exist "%bodytemp%" del "%bodytemp%"
for /f "delims=" %%i in ('dir /b /od "%Quell%DEB_*.*"') do call :ProcessLine "%Quell%%%i"
for /f "delims=" %%i in ('dir /b /od "%Quell%KRE_*.*"') do call :ProcessLine "%Quell%%%i"
echo Es sind %Anzahl% Fehlerdateien vorhanden!>"%body%"
echo.>>"%body%"
type "%bodytemp%">>"%body%"
echo.>>"%body%"
echo %hinweistext02%>>"%body%"
echo %hinweistext03%>>"%body%"
if NOT "%Anzahl%"=="0" c:atchBlatlat.exe "%body%" -to administrator@egal.de -server JSDAVID -subject "%message%"
del "%bodytemp%"
del "%body%"
goto :eof
:ProcessLine
echo %~nx1 - %~t1>>"%bodytemp%"
type %1>>"%bodytemp%"
echo %hinweistext04%>>"%bodytemp%"
echo.>>"%bodytemp%"
set /a Anzahl+=1
goto :eof
Wo und was muss ich jetzt ändern, dass die Datei(en) geändert werden und ich eine Benachrichtigung erhalte.
Ist dieser Code so an sich richtig???
set = CHANGE=INSERT
for /f %%i in ('find "UPDATE" %Quell%) do set zeichen=%CHANGE%
Vielen Dank noch mal für die Hilfe
Webbi1976
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 57863
Url: https://administrator.de/contentid/57863
Ausgedruckt am: 19.11.2024 um 20:11 Uhr
10 Kommentare
Neuester Kommentar
Das mit dem For stimmt schon.
Ich würde den Teil ab :ProcessLine ändern in:
Oder alternativ das Fettgedruckte so:
miniversum
Ich würde den Teil ab :ProcessLine ändern in:
:ProcessLine
<b>for /f %%i in ('type "%1"') do set zeichen=%%i
set change=%zeichen:UPDATE=INSERT%
echo %change%>"%1"</b>
echo %~nx1 - %~t1>>"%bodytemp%"
type %1>>"%bodytemp%"
echo %hinweistext04%>>"%bodytemp%"
echo.>>"%bodytemp%"
set /a Anzahl+=1
goto :eof
Oder alternativ das Fettgedruckte so:
for /f %%i in ('type "%1"') do set zeichen=%%i
echo INSERT%change:~6%>"%1"
echo INSERT%change:~6%>"%1"
miniversum
Du meintest doch die Datei hat nur eine Zeile oder?
Ersetze mal:
miniversum
Ersetze mal:
for /f %%i in ('type "%1"') do set zeichen=%%i
set change=%zeichen:UPDATE=INSERT%
echo %change%>"%1"
durch:set change=%zeichen:UPDATE=INSERT%
echo %change%>"%1"
for /f %%i in ('type "%1"') do set zeichen=%%i
set change=%zeichen:UPDATE=INSERT%
echo %change%>"%1_2"
del "%1"
ren "%1_2" "%1"
set change=%zeichen:UPDATE=INSERT%
echo %change%>"%1_2"
del "%1"
ren "%1_2" "%1"
miniversum
Hmm also ichhabs gradenochmal bei mri ausprobiert.
Könnte dir noch diese Variante anbieten:
oder eben dann so:
Gehe dein so beide nicht bei dir?
miniversum
PS: Sollte es ncith gehen kansn tud ja mal diese eine zeile aus der datei psoten wenn das geht?
Könnte dir noch diese Variante anbieten:
for /f %%i in ('type %1') do set zeichen=%%i
set change=%zeichen:UPDATE=INSERT%
echo %change%>%1
set change=%zeichen:UPDATE=INSERT%
echo %change%>%1
oder eben dann so:
for /f %%i in ('type %1') do set zeichen=%%i
echo INSERT%change:~6%>%1
echo INSERT%change:~6%>%1
Gehe dein so beide nicht bei dir?
miniversum
PS: Sollte es ncith gehen kansn tud ja mal diese eine zeile aus der datei psoten wenn das geht?
Na ja,
wenn es wirklich so ist, dass JEDE Zeile mit dem Wort/Token "UPDATE" beginnt, dann brauchen wir nicht so viel Heckmeck machen...
...wie gesagt, natürlich nur, wenn das 1.Token immer gleich "UPDATE" ist.
Gruss
Biber
wenn es wirklich so ist, dass JEDE Zeile mit dem Wort/Token "UPDATE" beginnt, dann brauchen wir nicht so viel Heckmeck machen...
...
:: So würde ich die Gesamt-Dateibehandlung am CMD-Prompt machen:
for /f "tokens=1,*" %i in (Originaldatei.txt) do @echo INSERT %j
REM optional noch anhängen ...>>Kopie.Txt
Gruss
Biber