BATCH: Fehler beim Schleifenzähler der FOR-Schleife
Hallo zusammen,
bei meinem Batch code soll folgendes passieren:
Abfrage Ordner anzahl & die maximale Anzahl der sich darin befindenden Dateien.
Alle Dateien aus allen Ordnern sollen mittels FOR von \User\Ordner\*1-x*\ nach \User\Test\ kopiert.
Hier stellt sich schon das erste Problem:
Die Dateien werden nicht kopiert. Wenn man die Ordner einzeln angibt sprich,
funktioniert es.
Nun zu Problem Nr. 2:
Hier soll in jede Datei (welche nun bereits in C:\User\Test\ liegen sollen) der Dateiname unter diesem Prinzip eingefügt werden
und der Inhalt der Datei ausgegeben werden.
Bei der Ausgabe sollte nun also: (bei 5 Ordnern mit jeweils 5 Dateien)
Die Ausgabe ist jedoch:
Woran kann das liegen? (Betriebssystem: Windows 10 Enterprise, ausgabe in CMD)
LG leowatzn
bei meinem Batch code soll folgendes passieren:
Abfrage Ordner anzahl & die maximale Anzahl der sich darin befindenden Dateien.
Alle Dateien aus allen Ordnern sollen mittels FOR von \User\Ordner\*1-x*\ nach \User\Test\ kopiert.
REM @ECHO OFF
CHCP 1252
SET /P e = "Anzahl der Ordner: "
SET /P m = "Maximale Anzahl der Dateien pro Ordner: "
FOR /L %%o IN (1,1,%%e) DO (
FOR %%f IN (C:\User\Ordner\%%o\*.txt) DO COPY %%f C:\User\Test\
)
PAUSE
Die Dateien werden nicht kopiert. Wenn man die Ordner einzeln angibt sprich,
FOR %%f IN (C:\User\ordner\1\*.txt) DO COPY %%f C:\User\Test\
FOR %%f IN (C:\User\ordner\2\*.txt) DO COPY %%f C:\User\Test\
...
Nun zu Problem Nr. 2:
Hier soll in jede Datei (welche nun bereits in C:\User\Test\ liegen sollen) der Dateiname unter diesem Prinzip eingefügt werden
und der Inhalt der Datei ausgegeben werden.
FOR /L %%i IN (1,1,%%e) DO (
FOR /L %%j IN (1,1,%%m) DO (
FOR /F %%f IN (C:\User\Test\%%i.%%j.txt) DO (
ECHO %%i.%%j.txt >> C:\User\Test\%%i.%%j.txt
ECHO %%f %%i %%j
)
)
)
PAUSE
<inhalt> 1 1
<inhalt> 1 2
...
<inhalt> 1 5
<inhalt> 2 1
...
<inhalt> 2 5
<inhalt> 3 1
...
<inhalt> 3 5
<inhalt> 4 1
...
<inhalt> 4 5
<inhalt> 5 1
...
<inhalt> 5 5
Die Ausgabe ist jedoch:
<inhalt> 1 1
<inhalt> 1 2
...
<inhalt> 1 5 //bis hier ist noch alles korrekt
<inhalt> 2 1
...
<inhalt> 2 4 //!!
<inhalt> 3 1
...
<inhalt> 3 4 //!!
<inhalt> 4 1
...
<inhalt> 4 4 //!!
<inhalt> 5 1
...
<inhalt> 5 4 //!!
Woran kann das liegen? (Betriebssystem: Windows 10 Enterprise, ausgabe in CMD)
LG leowatzn
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-Key: 484530
Url: https://administrator.de/contentid/484530
Ausgedruckt am: 29.03.2024 um 11:03 Uhr
8 Kommentare
Neuester Kommentar
Da sind ja auch diverse Fehler in deinem Skript, angefangen an fehlerhaftem Zuweisen zu einer Variablen bis hin zu falschen Verwendung der nicht existenten Variablen.
@ECHO OFF &setlocal ENABLEDELAYEDEXPANSION
CHCP 1252
SET /P anzahl="Anzahl der Ordner: "
SET /P max="Maximale Anzahl der Dateien pro Ordner: "
FOR /L %%x IN (1,1,%anzahl%) DO (
set cnt=1
for %%a IN ("C:\User\Ordner\%%x\*.txt") DO (
if !cnt! LEQ %max% (
COPY "%%a" "C:\User\Test\"
echo %%x-!cnt!.txt >>"C:\User\Test\%%~nxa"
type "C:\User\Test\%%~nxa"
set /a cnt+=1
)
)
)
Nur ne Klammer beim Kopieren vergessen ist oben nachgetragen.
Dann haben deine Dateien UTF oder eine andere Kodierung wie Unicode & Co also entweder Codepage passend setzen oder besser gleich die Powershell nutzen wenn man mit solchen Dateien hantiert...