Dateien verschieben abhängig von mehreren Separatoren
Hallo Leute,
eigentlich habe ich schon fast das passende Script für mein Anliegen gefunden aber leider nur fast.
Der nette User @bastla: beschreibt hier wenn der Separator mehrere Zeichen umfasst, müsste der Batch anders gestaltet werden und genau das ist das was ich bräuchte.
Es sind sogar mehrere Separatoren bei mir notwendig.
Sie lauten: .D0 .D1 .D2
Ich hoffe ihr könnt helfen.
eigentlich habe ich schon fast das passende Script für mein Anliegen gefunden aber leider nur fast.
Der nette User @bastla: beschreibt hier wenn der Separator mehrere Zeichen umfasst, müsste der Batch anders gestaltet werden und genau das ist das was ich bräuchte.
Es sind sogar mehrere Separatoren bei mir notwendig.
Sie lauten: .D0 .D1 .D2
Ich hoffe ihr könnt helfen.
Zitat von @bastla:
Wenn der Separator mehrere Zeichen umfasst, müsste der Batch anders gestaltet werden - ansonsten lässt sich aber zumindest mit einer Variablen die Anpassung vereinfachen (auf speziellen Wunsch ausnahmsweise sogar mit Kommentaren ):
Wenn der Separator mehrere Zeichen umfasst, müsste der Batch anders gestaltet werden - ansonsten lässt sich aber zumindest mit einer Variablen die Anpassung vereinfachen (auf speziellen Wunsch ausnahmsweise sogar mit Kommentaren ):
@echo off & setlocal
set "Ordner=D:\Dein Ordner"
set "Separator=_"
REM voruebergehend in den angegebenen Ordner wechseln
pushd "%Ordner%"
REM in einer Schleife alle passenden Dateien (mit dem Separator im Namen; keine Ordner) abarbeiten
for /f "delims=" %%i in ('dir /b/a-d "*%Separator%*"') do (
REM Anfangsstring isolieren
for /f "delims=%Separator%" %%a in ("%%i") do (
REM Anzahl der mit dem Anfangsstring beginnenden Dateien ermitteln und
REM wenn mehr als eine Datei vorhanden ist ...
for /f %%n in ('dir "%%a%Separator%*.*"2^>nul^|findstr "Datei(en)"') do if %%n gtr 1 (
REM ... den Zielordner erstellen (falls bereits vorhanden Fehlermeldung nicht anzeigen) ...
md "%%a" 2>nul
REM ... und alle entsprechenden Dateien in den Zielordner verschieben
move "%%a%Separator%*.*" "%%a">nul
)
)
)
REM Wechsel des Ordners rückgängig machen
popd
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7060838942
Url: https://administrator.de/contentid/7060838942
Ausgedruckt am: 24.11.2024 um 18:11 Uhr
4 Kommentare
Neuester Kommentar
Hm, ich würde vorschlagen das eher in Powershell zu machen, da gerade arbeiten mit Arrays, suchen in Strings usw. dort deutlich besser funktioniert.
Ich habe ohne ohne Bezug auf das ursprüngliche Script jedoch gerade nicht so ganz das Verständnis was genau das Ziel des Scripts ist.
Könntest du ein Beispiel DEINER Dateinamen geben + wie bei 2 solcher Dateien die Zielstruktur aussehen sollte wenn das Script gelaufen ist?
Ich habe ohne ohne Bezug auf das ursprüngliche Script jedoch gerade nicht so ganz das Verständnis was genau das Ziel des Scripts ist.
Könntest du ein Beispiel DEINER Dateinamen geben + wie bei 2 solcher Dateien die Zielstruktur aussehen sollte wenn das Script gelaufen ist?
Hi.
Mit PowerShell schnell abgehakt
Grüße
Mit PowerShell schnell abgehakt
Get-ChildItem 'D:\DeinOrdner' -File | ?{$_.Basename -match '(.+)\.D[0-2]'} | move-item -Destination {(new-item -type dir "$($_.DirectoryName)\$($matches[1])" -Force).Fullname} -verbose
Keine Ursache, wenns hilft .