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
Please also mark the comments that contributed to the solution of the article
Content-Key: 7060838942
Url: https://administrator.de/contentid/7060838942
Printed on: June 23, 2024 at 19:06 o'clock
4 Comments
Latest comment
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?
![Mitglied: 7010350221 Mitglied: 7010350221](/images/members/profile_male_64x64.png)
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
![Mitglied: 7010350221 Mitglied: 7010350221](/images/members/profile_male_64x64.png)
Keine Ursache, wenns hilft
.