Batch: Dateien ohne Artikel kopieren
Hallo in die Runde!
Zwar suche ich jetzt schon eine ganze Weile und habe auch schon (erfolglos) einen Kollegen mit ins Boot geholt aber für mein folgendes Problem habe ich noch keine Lösung gefunden. (Obwohl es bestimmt gar nicht so schwer ist... aber vielleicht suche ich auch einfach falsch)
Ich habe einen Ordner mit einem Haufen Text-Dateien. Die Dateien sollen in bereits vorhandene Ordner (A-Z und 1-0) alphabetisch einsortiert werden. Ich habe schon die folgende Batch, die grundsätzlich funktioniert:
So weit so gut so einfach... Und jetzt das Problem. Es gibt in dem Ordner auch einige Dateien mit vorangestellten Artikeln (z. B. "Der Kratzbaum.txt"), die mit dieser Methode ebenfalls unter dem ersten Buchstaben des Dateinamens abgelegt werden. Stattdessen sollte der Artikel ignoriert und die Datei unter "K" abgelegt werden. Und da verlassen mich meine (spärlichen) Fähigkeiten...
Ich könnte dem o. g. Code noch eine andere Verteilung mit einer Variable für die Artikel (Der Die Das) voranstellen nur da weiß ich auch nicht wie ich an den korrekten Ausgabeordner komme.
Ich hoffe, mir kann jemand von Euch helfen.
Schönen Abend!
B.
Zwar suche ich jetzt schon eine ganze Weile und habe auch schon (erfolglos) einen Kollegen mit ins Boot geholt aber für mein folgendes Problem habe ich noch keine Lösung gefunden. (Obwohl es bestimmt gar nicht so schwer ist... aber vielleicht suche ich auch einfach falsch)
Ich habe einen Ordner mit einem Haufen Text-Dateien. Die Dateien sollen in bereits vorhandene Ordner (A-Z und 1-0) alphabetisch einsortiert werden. Ich habe schon die folgende Batch, die grundsätzlich funktioniert:
1
2
3
4
2
3
4
set "VARBuchstaben=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 9 0"
for %%a in (%VARBuchstaben%) do (
copy %%a*.txt D:\Temp\%%a\%%a*.txt
)
So weit so gut so einfach... Und jetzt das Problem. Es gibt in dem Ordner auch einige Dateien mit vorangestellten Artikeln (z. B. "Der Kratzbaum.txt"), die mit dieser Methode ebenfalls unter dem ersten Buchstaben des Dateinamens abgelegt werden. Stattdessen sollte der Artikel ignoriert und die Datei unter "K" abgelegt werden. Und da verlassen mich meine (spärlichen) Fähigkeiten...
Ich könnte dem o. g. Code noch eine andere Verteilung mit einer Variable für die Artikel (Der Die Das) voranstellen nur da weiß ich auch nicht wie ich an den korrekten Ausgabeordner komme.
Ich hoffe, mir kann jemand von Euch helfen.
Schönen Abend!
B.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1733251854
Url: https://administrator.de/forum/batch-dateien-ohne-artikel-kopieren-1733251854.html
Ausgedruckt am: 04.04.2025 um 22:04 Uhr
4 Kommentare
Neuester Kommentar
Ungetestet:
Schmeiß mal statt nur einer, diese 3 Zeilen in den Rumpf deiner Schleife.
... um erst mal alle Dateien mit Artikel zu erwischen. Und dann eine weitere Schleife mit deiner ursprünglichen Zeile im Rumpf.
Steffen
Schmeiß mal statt nur einer, diese 3 Zeilen in den Rumpf deiner Schleife.
1
2
3
2
3
copy "Der %%a*.txt" "D:\Temp\%%a\Der %%a*.txt"
copy "Die %%a*.txt" "D:\Temp\%%a\Die %%a*.txt"
copy "Das %%a*.txt" "D:\Temp\%%a\Das %%a*.txt"
1
copy "%%a*.txt" "D:\Temp\%%a\%%a*.txt"
Steffen
Moin,
lass das Batch-rumgemurkse und nimm Powershell, damit ist das Ganze ein klacks.
Gruß Thomas
lass das Batch-rumgemurkse und nimm Powershell, damit ist das Ganze ein klacks.
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# Quellpfad
$Source = 'D:\Temp'
# Ordner von A-Z erstellen
Foreach ($Letter in [char[]](65..90)) {[void](mkdir "$Source\$Letter" -Force)}
# Dateien auflisten und nach Anfangsbuchstaben gruppieren, Artikel ignorieren
$Groups = Get-ChildItem -File "$Source\*.txt" | Group-Object { ($_.Name -replace '^(der|die|das) ') }
# Jede Gruppe in den entsprechenden Ordner schieben
Foreach ($Group in $Groups) {
Move-Item -Path $Group.Group.Fullname -Destination "$Source\$($Group.Name)\"
}
Gruß Thomas