Per Batch bestimmte Zeichenketten bzw. Stellen in Datei suchen und als Dateiname verwenden
Anfänger benötigt Hilfe
Hallo,
ich habe etliche Einträge zu diesem Thema gefunden, bin aber überhaupt nicht schlau draus geworden.
Vielleicht könnt Ihr bei meinem Problem Hifestellung leisten:
Ich habe eine Datei, welche den Dateinamen 1.out hat.
Inhalt der Datei ist: an Irgendeiner Stelle kommt eine Zeichenkette "ADREVER(+18 Blanks)" vor. Der Inhalt nach dieser Zeichenkette soll in der Länge 55 ohne Blank als erster Teil des Namens verwendet werden.
Gefolgt von einem _ und dann der Zweite Teil mit Zeichenkette "BORK(+4 Blanks)" nach dieser Länge 28 ohne Blanks.
Inhalt Datei:
ADREVER(+18 Blanks)Hallo(+50Blanks)68529356423
BORK(+4 Blanks)01012008(+20Blanks)563467
Ergebnis: Dateiname lautet -> Hallo_01012008.out
Die Stelle ist nur durch die Zeichenkette zu finden.
Das ist bestimmt Möglich, weiß nur nicht wie.
Danke für die Hilfe.
Marko
EDIT: Da die Blanks nicht angezeigt worden hab ich die in Klammer dazugeschrieben...
Hallo,
ich habe etliche Einträge zu diesem Thema gefunden, bin aber überhaupt nicht schlau draus geworden.
Vielleicht könnt Ihr bei meinem Problem Hifestellung leisten:
Ich habe eine Datei, welche den Dateinamen 1.out hat.
Inhalt der Datei ist: an Irgendeiner Stelle kommt eine Zeichenkette "ADREVER(+18 Blanks)" vor. Der Inhalt nach dieser Zeichenkette soll in der Länge 55 ohne Blank als erster Teil des Namens verwendet werden.
Gefolgt von einem _ und dann der Zweite Teil mit Zeichenkette "BORK(+4 Blanks)" nach dieser Länge 28 ohne Blanks.
Inhalt Datei:
ADREVER(+18 Blanks)Hallo(+50Blanks)68529356423
BORK(+4 Blanks)01012008(+20Blanks)563467
Ergebnis: Dateiname lautet -> Hallo_01012008.out
Die Stelle ist nur durch die Zeichenkette zu finden.
Das ist bestimmt Möglich, weiß nur nicht wie.
Danke für die Hilfe.
Marko
EDIT: Da die Blanks nicht angezeigt worden hab ich die in Klammer dazugeschrieben...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 80055
Url: https://administrator.de/contentid/80055
Ausgedruckt am: 15.11.2024 um 05:11 Uhr
5 Kommentare
Neuester Kommentar
helo loony666
so wie ich das verstanden habe suchst du das ...
getestet mit txt file namens 1.out
lowbyte
so wie ich das verstanden habe suchst du das ...
getestet mit txt file namens 1.out
@echo off & setlocal
set "e=echo."
Findstr /R "ADREVER BORK" 1.out.txt >> test5.txt
For /F "tokens=2" %%i in (test5.txt) do call :ProcessLine "%%i"
%e%
%e%Ergebnis: Dateiname lautet - %var%_%var1%.out
ren 1.out.txt %var%_%var1%.out
%e% & %e% & %e%
pause
del test5.txt
endlocal & exit
:ProcessLine
if not defined var (
Set "var=%~1"
) else (
Set "var1=%~1"
)
goto:eof
lowbyte
helo marko
wen du ein paar dateien umbenennen willst ...
dieser code_schnipsel funktioniert nur wen die dateien alle (inkrementierent) bennant sind zbsp: 1.out.txt 2.out.txt 3.out.txt usw.
und die findstr argumente wie ADREVER und BORK auch gleich bleiben.
code erklärung
lowbyte
wen du ein paar dateien umbenennen willst ...
dieser code_schnipsel funktioniert nur wen die dateien alle (inkrementierent) bennant sind zbsp: 1.out.txt 2.out.txt 3.out.txt usw.
und die findstr argumente wie ADREVER und BORK auch gleich bleiben.
echo.wieviele dateien möchtest du umbenennen?
echo.input:
set /P input=
for /L %%a in (1,1,%input%) do Findstr /R "ADREVER BORK" %%a.out.txt >> test%%a.txt
dann weiter verarbeiten ...
code erklärung
@echo off & setlocal 1.echo off // Startet die Begrenzung des Gültigkeitsbereiches von Änderungen.
Änderungen der Umgebung nach SETLOCAL sind nur auf die Batchdatei bezogen.
set "e=echo." 2.befehl echo. wird der variable e zugewisen.
Findstr /R "ADREVER BORK" 1.out.txt >> test5.txt
For /F "tokens=2" %%i in (test5.txt) do call :ProcessLine "%%i" 3.liest das 2.te token aus der test5.txt, danach wird der codeblock :ProcessLine ge-callt (in abschnitt 4.) und im das argument %%i übergeben.
in diesem fall läuft bei dir die schleife genau 2 mal weil du 2 werte ausliest und danach var und var1 zuweist.
%e%
%e%Ergebnis: Dateiname lautet - %var%_%var1%.out 7.wen die 2 variablen ein wert haben setzten wir die strings zusammen und zeigen das ergebniss an.
ren 1.out.txt %var%_%var1%.out 8.wir benennen die datei um. in %var%_%var1%.out
%e% & %e% & %e% 9.das sind nur echos (das wird dich verwirrt haben).
pause 10.break
del test5.txt 11.lösche test5.txt
endlocal & exit 12.beendet die begrenzung des gültigkeitsbereiches von änderungen. und batch schlissen.
:ProcessLine 4. codeblock :ProcessLine .
if not defined var ( 5. falls nicht definiert variable "var"
Set "var=%~1" argument %%i variable "var" zuweisen.
) else ( sonst ....
Set "var1=%~1" argument %%i variable "var1" zuweisen.
)
goto:eof 6. in diesem fall end of codeblock. danach sprung zurück nach abschnitt 3.
lowbyte