Befehl zur Variablen - übernahme - übergabe gesucht
Inhalt von %%i soll an eine Variable übergeben werden
Servus,
trotz stöberns finde ich keine Lösung, obwohl mein Problem sicher "primitiv" ist...
In einer Datei "dirtmp.txt" sind zeilenweise untereinander Dateinamen gelistet, die nacheinander in einer for- Schleife abgearbeitet werden sollen.
Die Zeilen werden ausgelesen und tauchen in %%i auf (wie gewünscht).
Der Inhalt von %%i soll bei jedem Durchgang an die Variable "datei" übergeben werden - das bringe ich nicht hin...
Hier das "Script"...
Die drei Zeilen:
%%i==%Datei%
rem set "Datei=%%i"
set "%%i=Datei"
sind natürlich falsch, hier müsste der richtige Befehl zur Variablenübergabe hin.
Danke vorab, Gruß - Toni
Servus,
trotz stöberns finde ich keine Lösung, obwohl mein Problem sicher "primitiv" ist...
In einer Datei "dirtmp.txt" sind zeilenweise untereinander Dateinamen gelistet, die nacheinander in einer for- Schleife abgearbeitet werden sollen.
Die Zeilen werden ausgelesen und tauchen in %%i auf (wie gewünscht).
Der Inhalt von %%i soll bei jedem Durchgang an die Variable "datei" übergeben werden - das bringe ich nicht hin...
Hier das "Script"...
set "Datei=1234.LOG"
for /f %%i in (dirtmp.txt) do (
echo %%i
%%i==%Datei%
rem set "Datei=%%i"
set "%%i=Datei"
echo das soll abgearbeitet werden
echo %Datei%
echo %%i
)
pause
%%i==%Datei%
rem set "Datei=%%i"
set "%%i=Datei"
sind natürlich falsch, hier müsste der richtige Befehl zur Variablenübergabe hin.
Danke vorab, Gruß - Toni
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 206026
Url: https://administrator.de/contentid/206026
Ausgedruckt am: 22.11.2024 um 01:11 Uhr
9 Kommentare
Neuester Kommentar
Hallo leknilk0815!
Der Befehl wäre
- die Frage ist allerdings, wozu Du die Variable %Datei% überhaupt benötigst (da sie nämlich ohne "
... und da "dirtemp.txt" sehr nach zwischengespeicherter Ausgabe eines "
könntest Du diese Datei auch einsparen.
Grüße
bastla
Der Befehl wäre
set "Datei=%%i"
delayedExpansion
" bzw ein Unterprogramm in der Schleife ohnehin nicht unmittelbar verwendbar ist) ...... und da "dirtemp.txt" sehr nach zwischengespeicherter Ausgabe eines "
dir
"-Befehles klingt: mit zBfor /f "delims=" %%i in ('dir /b *.txt') do
Grüße
bastla
Hallo leknilk0815!
Wenn Du also den aktuellen Stand des Scripts und die notwendigen Zusatzinformationen (etwa: Wo befinden sich die Quelldateien? Wie sollen die Zieldateien benannt werden? etc) postest, schau ich mir das nachher an.
Grüße
bastla
Ich glaub, ich mach es manuell...
Ich will Dich nicht davon abhalten - aber eine Schleife um das bestehende Script "herumzuwickeln" wird kein größeres Problem sein ...Wenn Du also den aktuellen Stand des Scripts und die notwendigen Zusatzinformationen (etwa: Wo befinden sich die Quelldateien? Wie sollen die Zieldateien benannt werden? etc) postest, schau ich mir das nachher an.
Grüße
bastla
Hallo leknilk0815!
Völlig ungetestet etwa so:
Grüße
bastla
Völlig ungetestet etwa so:
@echo off & setlocal
set "Quelle=quelldateien" & REM hier auch absolute Pfadangabe möglich
set "Typ=LOG"
set "AusgabeFile=gps.csv"
for /f "delims=" %%d in ('dir /b/a-d "%Quelle%\*.%Typ%"') do call :ProcessFile "%Quelle\%%d"
goto :eof
:ProcessFile
set "Datei=%~1"
set "Bak=.bak"
set "AusgabeDatei=bereinigt-1.log"
set "Duplikate=Duplikate.txt"
set /a LineNo=0
move "%Datei%" "%Datei%%Bak%"
copy nul "%Duplikate%">nul
for /f "usebackq delims=" %%i in ("%Datei%%Bak%") do set "Zeile=%%i" & call :ProcessLine
set "Datei=bereinigt-1.log"
set "Bak=.bak"
set "AusgabeDatei=%AusgabeFile%"
set "Duplikate=Duplikate.txt"
set /a LineNo=0
move "%Datei%" "%Datei%%Bak%"
copy nul "%Duplikate%">nul
for /f "usebackq delims=" %%i in ("%Datei%%Bak%") do set "Zeile=%%i" & call :ProcessLine2
del "%Datei%%Bak%"
del "%Duplikate%"
goto :eof
:ProcessLine
set /a LineNo+=1
echo Validiere Zeile %LineNo% ...
findstr /b /c:"%Zeile:~,19%" "%AusgabeDatei%">nul && >>"%Duplikate%" echo %Zeile% || >>"%AusgabeDatei%" echo %Zeile%
goto :eof
:ProcessLine2
set /a LineNo+=1
echo Validiere Zeile %LineNo% ...
set "Reduziert=%Zeile:~,23%%Zeile:~64,-8%"
set "Reduziert=%Reduziert:~,10%,%Reduziert:~11,8%,%Reduziert:~23,10%,%Reduziert:~34%"
findstr /e /c:"%Zeile:~-31%" "%AusgabeDatei%">nul && >>"%Duplikate%" echo %Zeile% || >>"%AusgabeDatei%" echo %Reduziert%
goto :eof
bastla
Hallo bastla,
abgesehen davon, dass dort ein "%" fehlt:
führen diese Konstruktionen zu wundersamen Veränderungen von Zeichenketten, Beispiel:
Output ist:
<code type="plain>
alcohol ^ 120%
alcohol 120%
alcohol 120
alcohol 120
Gruss!
abgesehen davon, dass dort ein "%" fehlt:
call :ProcessFile "%Quelle\%%d"
führen diese Konstruktionen zu wundersamen Veränderungen von Zeichenketten, Beispiel:
@echo off &setlocal
set "file=alcohol ^^ 120%%"
echo %file%
setlocal enabledelayedexpansion
echo !file!
endlocal
call:process "%file%"
goto:eof
:process
set "pfile=%~1"
echo %pfile%
setlocal enabledelayedexpansion
echo !pfile!
endlocal
goto:eof
Output ist:
<code type="plain>
alcohol ^ 120%
alcohol 120%
alcohol 120
alcohol 120
Gruss!