Batch zum Orden von Dateien in die jeweiligen Ordner!
Hallo Leute,
ich schreibe gerade an meiner Masterarbeit und arbeite mit einer Menge RAW und TIFF Dateien. Diese liegen wie folgt in einem Ordner (aber auch getrennt in einzelnen Ordner möglich) vor:
TTC00078
TTC00079
TTC00080
TTC00081
...
TTC10078
TTC10079
TTC10080
TTC10081
...
TTC20078
TTC20079
TTC20080
TTC20081
...
TTC30078
TTC30079
TTC30080
TTC30081
...
TTC40078
TTC40079
TTC40080
TTC40081
...
TTC50078
TTC50079
TTC50080
TTC50081
Nun möchte ich aber alle z.B: 78 Dateien in einem Ordner haben und alle 79 in einem Ordner und so weiter.
Das sähe dann so aus:
TTC00078
TTC10078
TTC20078
TTC30078
TTC40078
TTC50078 in einem Ordner und das mit 79, 80 u.s.w.
ich habe leider keine Ahnung von der Materie und auch nicht die Zeit alles manuell in einzelne Ordner zu verschieben. Vielleicht hättet ihr den für mich passenden Quellcode. Ich könnte garnicht sagen, wie dankbar ich euch wäre. Und sry, dass ich euch nach so einem Mist frage.
LG
ich schreibe gerade an meiner Masterarbeit und arbeite mit einer Menge RAW und TIFF Dateien. Diese liegen wie folgt in einem Ordner (aber auch getrennt in einzelnen Ordner möglich) vor:
TTC00078
TTC00079
TTC00080
TTC00081
...
TTC10078
TTC10079
TTC10080
TTC10081
...
TTC20078
TTC20079
TTC20080
TTC20081
...
TTC30078
TTC30079
TTC30080
TTC30081
...
TTC40078
TTC40079
TTC40080
TTC40081
...
TTC50078
TTC50079
TTC50080
TTC50081
Nun möchte ich aber alle z.B: 78 Dateien in einem Ordner haben und alle 79 in einem Ordner und so weiter.
Das sähe dann so aus:
TTC00078
TTC10078
TTC20078
TTC30078
TTC40078
TTC50078 in einem Ordner und das mit 79, 80 u.s.w.
ich habe leider keine Ahnung von der Materie und auch nicht die Zeit alles manuell in einzelne Ordner zu verschieben. Vielleicht hättet ihr den für mich passenden Quellcode. Ich könnte garnicht sagen, wie dankbar ich euch wäre. Und sry, dass ich euch nach so einem Mist frage.
LG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 241385
Url: https://administrator.de/forum/batch-zum-orden-von-dateien-in-die-jeweiligen-ordner-241385.html
Ausgedruckt am: 03.04.2025 um 22:04 Uhr
17 Kommentare
Neuester Kommentar
Hi,
wenn die Dateinamen immer die selbe feste Länge haben, dann kanst Du beim MOVE mit Wildcards arbeiten, hier z.B. "??????78" und "??????79" usw.
Die Zahlen kannst Du mit verschachtelten For-Schleifen genrieren.
Bsp. Batch
E.
wenn die Dateinamen immer die selbe feste Länge haben, dann kanst Du beim MOVE mit Wildcards arbeiten, hier z.B. "??????78" und "??????79" usw.
Die Zahlen kannst Du mit verschachtelten For-Schleifen genrieren.
Bsp. Batch
@echo off
For %%z in (0 1 2 3 4 5 6 7 8 9) Do For %%e in (0 1 2 3 4 5 6 7 8 9) Do md %%z%%e && move ??????%%z%%e.* %%z%%e
E.
Äh, eine Batch ist ein "Windows-Skript". So zu sagen. Es läuft auch unter Windows.
Die von mir genannten Zeilen erstellen Ordner von 00 bis 99 und verschieben die Dateien entsprechend. Man kann das auch für 000-499 oder 999 anpassen.
1. Erstelle mit Notepad eine Datei im selben Ordner, in welchem die Bilder sind. Beliebiger Name, aber Dateiendung ".cmd" (nicht .cmd.txt !) (und auch nicht mit Ziffern am Ende
), z.B. MoveFiles.cmd
2. Kopiere den u.g. Code rein und speicher die Datei erneut.
3. starte cmd.exe, gehe auf das Laufwerk und wechsle in den Ordner mit den Bildern.
4. starte die eben erstellte batch
Diese erstellt jetzt Ordner von 000 bis 999 und verschiebt die Dateien entsprechend.
E.
Die von mir genannten Zeilen erstellen Ordner von 00 bis 99 und verschieben die Dateien entsprechend. Man kann das auch für 000-499 oder 999 anpassen.
1. Erstelle mit Notepad eine Datei im selben Ordner, in welchem die Bilder sind. Beliebiger Name, aber Dateiendung ".cmd" (nicht .cmd.txt !) (und auch nicht mit Ziffern am Ende
2. Kopiere den u.g. Code rein und speicher die Datei erneut.
3. starte cmd.exe, gehe auf das Laufwerk und wechsle in den Ordner mit den Bildern.
4. starte die eben erstellte batch
Diese erstellt jetzt Ordner von 000 bis 999 und verschiebt die Dateien entsprechend.
@echo off
For %%h in (0 1 2 3 4 5 6 7 8 9) Do For %%z in (0 1 2 3 4 5 6 7 8 9) Do For %%e in (0 1 2 3 4 5 6 7 8 9) Do md %%h%%z%%e && move ?????%%h%%z%%e.* %%h%%z%%e
E.
Bei mir funktioniert der Code. Habe es eben nochmal getestet.
Diese Meldung "Dateiname existiert bereits, oder die Datei konnte nicht gefunden werden" kannste ignorieren. Sie kommt von den vielen Mustern, welches es noch nciht gibt. Wemm es z.B. noch keine Dateien mit xxxxx999 gibt, dann wird es bei 999 eben meckern.
Ich habe den Code nochnmal angepasst. Jetzt werden die Ordner gar bloß erstellt, wenn entsprechende Dateien vorhanden sind.
Immer vorausgesetzt, dass die Dateinamen 8 Zeichen lang sind (plus Endung), wie in Deiner Anfrage dargestellt.
E.
Diese Meldung "Dateiname existiert bereits, oder die Datei konnte nicht gefunden werden" kannste ignorieren. Sie kommt von den vielen Mustern, welches es noch nciht gibt. Wemm es z.B. noch keine Dateien mit xxxxx999 gibt, dann wird es bei 999 eben meckern.
Ich habe den Code nochnmal angepasst. Jetzt werden die Ordner gar bloß erstellt, wenn entsprechende Dateien vorhanden sind.
Immer vorausgesetzt, dass die Dateinamen 8 Zeichen lang sind (plus Endung), wie in Deiner Anfrage dargestellt.
@echo off
For %%h in (0 1 2 3 4 5 6 7 8 9) Do For %%z in (0 1 2 3 4 5 6 7 8 9) Do For %%e in (0 1 2 3 4 5 6 7 8 9) Do if exist ?????%%h%%z%%e.* (md %%h%%z%%e && move ?????%%h%%z%%e.* %%h%%z%%e)
E.
Hallo Tiff0588 und willkommen im Forum!
Eine Schleife über alle Unterordner eines Ordners kannst Du einfach nach folgendem Schema erzeugen:
Anstelle der Ausgabe in Zeile 3 wäre dann der von Dir nicht näher beschriebene Aufruf des Programms "OSGeo4W Shell" durchzuführen, wobei durch das "
Grüße
bastla
Eine Schleife über alle Unterordner eines Ordners kannst Du einfach nach folgendem Schema erzeugen:
for /d %%i in ("D:\Ordner mit den Unterordnern\*") do (
pushd "%%i"
echo Programm wird gestartet in %%i
popd
)
push
" vorweg in den jeweiligen Ordner gewechselt wird, sodass Du keine Pfadangabe für die Quell- und Zieldateien benötigst ...Grüße
bastla
Hallo Tiff0588!
Na dann eben etwas in der Art (ungetestet):
Grüße
bastla
Na dann eben etwas in der Art (ungetestet):
@echo off & setlocal enabledelayedexpansion
set "mypath=D:\test"
for /d %%i in ("%mypath%\*") do (
pushd "%%i"
set "files="
for /f "delims=" %%a in ('dir /b/on *.tif') do set "files=!files! %%a"
gdal_merge -o Stacked.img -of HFA -separate !files!
popd
)
bastla
Hallo Tiff0588!
Versuch es zum Testen mit folgender Version:
Du kannst so sehen, wie der Aufruf von "gdal_merge" erfolgen würde (nachdem das
Grüße
bastla
Versuch es zum Testen mit folgender Version:
@echo off & setlocal enabledelayedexpansion
set "mypath=D:\test"
for /d %%i in ("%mypath%\*") do (
pushd "%%i"
set "files="
for /f "delims=" %%a in ('dir /b/on *.tif') do set "files=!files! %%a"
echo Ordner: %%i
if defined files echo gdal_merge -o Stacked.img -of HFA -separate !files!
popd
)
echo
davor entfernt wurde) - die Verarbeitung wird so auch nur versucht, wenn tatsächlich .tif-Dateien gefunden wurden ...Grüße
bastla