Unterverzeichnisse erstellen - anhand Dateiname
Hallo Adminexperten
freu mich sehr über einen Tip
Besten Gruss sk1412
Hallo Admin-Experten
möchte gern Folgendes erreichen:
in einem Verzeichnis existieren VIIIIIIEEEELE Dateien (über 10.000 Dateien) mit der "Logik" im Dateinamen
JJJJMMTT_hhmmss_xxx.jpg /.mov /.txt ..usw
Ich bin auf der Suche nach einer Möglichkeit, diese Dateien in Unterordnern zu verschieben.
Diese Unterordner existieren noch nicht.
Meine Idee:
Erstelle ein Unterverzeichnis für jedes Jahr/jeden Monat
und verschiebe alle relevanten Dateien in die richtigen Verzeichnisse
Also:
Erstelle ein Verzeichnis mit dem Namen z.b. 200909
und kopiere alle Dateien, die mit dem Namen 200909 beginnen in dieses Verzeichnis
Das sollte dann für ALLE Dateien durchgeführt werden.
Dasselbs soll natürlich für alle anderen Dateien nach der gleichen Logik durchgeführt werden.
Ich würd mich seeehr über einen Tip freuen, um die Riesenflut an Dateien zu sortieren
Besten Dank im voraus
sk1412
Stefan
freu mich sehr über einen Tip
Besten Gruss sk1412
Hallo Admin-Experten
möchte gern Folgendes erreichen:
in einem Verzeichnis existieren VIIIIIIEEEELE Dateien (über 10.000 Dateien) mit der "Logik" im Dateinamen
JJJJMMTT_hhmmss_xxx.jpg /.mov /.txt ..usw
Ich bin auf der Suche nach einer Möglichkeit, diese Dateien in Unterordnern zu verschieben.
Diese Unterordner existieren noch nicht.
Meine Idee:
Erstelle ein Unterverzeichnis für jedes Jahr/jeden Monat
und verschiebe alle relevanten Dateien in die richtigen Verzeichnisse
Also:
Erstelle ein Verzeichnis mit dem Namen z.b. 200909
und kopiere alle Dateien, die mit dem Namen 200909 beginnen in dieses Verzeichnis
Das sollte dann für ALLE Dateien durchgeführt werden.
Dasselbs soll natürlich für alle anderen Dateien nach der gleichen Logik durchgeführt werden.
Ich würd mich seeehr über einen Tip freuen, um die Riesenflut an Dateien zu sortieren
Besten Dank im voraus
sk1412
Stefan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 21.09.2009 um 22:03:44 Uhr
Na ja, ich verschiebe den Beitrag schon mal von "Windows" nach"Batch & Shell".
Auch wenn da wieder dieses "Dank im voraus" drinsteht.
Grüße Biber
Auch wenn da wieder dieses "Dank im voraus" drinsteht.
Grüße Biber
Content-ID: 125457
Url: https://administrator.de/forum/unterverzeichnisse-erstellen-anhand-dateiname-125457.html
Ausgedruckt am: 10.01.2025 um 21:01 Uhr
10 Kommentare
Neuester Kommentar
Hallo sk1412!
Etwa so:
Grüße
bastla
Etwa so:
@echo off & setlocal
set "Basis=D:\Das Verzeichnis"
pushd "%Basis%"
for /f "delims=" %%i in ('dir /b /a-d') do call :ProcessFile "%%i"
popd
goto :eof
:ProcessFile
set "Datei=%~1"
set "Verz=%Datei:~,6%"
if not exist "%Verz%" md "%Verz%"
move "%Datei%" "%Verz%"
goto :eof
bastla
Hallo sk1412,
[edit]
ups ich war wohl zu lange woanders beschäftigt.
ich sollte mich doch mal auf meine sachen konzentrieren.....
[/edit]
ja "besten Dank im Vorraus" wird nicht gerne gesehen dafür aber ein Danke wenn geholfen worden ist. Und bei Erfolg danach bitte den grünen Haken setzen.
hier ist Dein code mit vorschaufunktion und anschliessender Bestätigungsfrage.
einfach den Ordner wo die ganzen dateien drin sind auf den Batch ziehen oder im CMD Batchname "ordnername"
Gruß Phil
[edit]
ups ich war wohl zu lange woanders beschäftigt.
ich sollte mich doch mal auf meine sachen konzentrieren.....
[/edit]
ja "besten Dank im Vorraus" wird nicht gerne gesehen dafür aber ein Danke wenn geholfen worden ist. Und bei Erfolg danach bitte den grünen Haken setzen.
hier ist Dein code mit vorschaufunktion und anschliessender Bestätigungsfrage.
einfach den Ordner wo die ganzen dateien drin sind auf den Batch ziehen oder im CMD Batchname "ordnername"
:: ------- schnipp movefiles2-0,6-namefolder.bat
@echo off & setlocal
if exist "%~1." (pushD "%~1") else goto :eof
set "Vorschau="& set "proceed="
echo.Es erfolgt erst eine Vorschau&echo.& ping localhost -n 3 >nul
:begin
if not defined Vorschau (set "Vorschau=@echo."&goto :proceed) else set "Vorschau="
echo.&echo.&echo.
set /p proceed=Moechtest Du die Daten wie es angezeigt wurde Verschieben? [J] [N]
if /i "%proceed%" neq "j" goto :eof
:proceed
for %%i in (*) do (set "name=%%i"
setlocal enabledelayedexpansion
%Vorschau%
if not exist "!name:~0,6!" %Vorschau%mkdir "!name:~0,6!"
%Vorschau%move "!name!" "!name:~0,6!\!name!"
endlocal
)
if not defined proceed goto :begin
popD
:: ------- schnapp movefiles2-0,6-namefolder.bat
Gruß Phil
@ph
Nice - allerdings funktioniert die Zeile 10 (bei mir) in der Form
besser - in Deiner Fassung endet's (bei mir) mit
Der Ordnung halber könntest Du auch noch das schließende Anführungszeichen in Zeile 12 setzen.
Grüße
bastla
P.S.: Die Vorschau für 10.000+ Dateien könnte etwas ermüdend wirken ...
Nice - allerdings funktioniert die Zeile 10 (bei mir) in der Form
if /i "%proceed%" neq "j" goto :eof
""j"" ist syntaktisch an dieser Stelle nicht verarbeitbar.
Der Ordnung halber könntest Du auch noch das schließende Anführungszeichen in Zeile 12 setzen.
Grüße
bastla
P.S.: Die Vorschau für 10.000+ Dateien könnte etwas ermüdend wirken ...
@ bastla
das " in Zeile 12 hab ich übersehen...
hab mal die 2 Zeilen angepasst...
warum allerdings bei Dir %proceed% mit umschliessenden Gänsefüschen kommt frag ich mich....
bei mir ist es ohne
set /p macht doch gar keine Gänsefüschen drumherum
Hhhmmmm...
ich hab mal %windir%\system32 draufgezogen über 2300 Files nichtmal 2 sekunden also so lange dauerts nicht....
Gruß Phil
das " in Zeile 12 hab ich übersehen...
hab mal die 2 Zeilen angepasst...
warum allerdings bei Dir %proceed% mit umschliessenden Gänsefüschen kommt frag ich mich....
bei mir ist es ohne
set /p macht doch gar keine Gänsefüschen drumherum
Hhhmmmm...
ich hab mal %windir%\system32 draufgezogen über 2300 Files nichtmal 2 sekunden also so lange dauerts nicht....
Gruß Phil
@ph
Mit einer Umkehrung von "not" und "/i" klappt's übrigens auch bei mir:
(was in der Hinsicht logisch erscheint, dass "/i" eine Option von "if" und nicht von "not" ist).
Grüße
bastla
warum allerdings bei Dir %proceed% mit umschliessenden Gänsefüschen kommt frag ich mich....
bei mir ist es ohne
set /p macht doch gar keine Gänsefüschen drumherum
Hhhmmmm..,
Davon, dass der Fehler bei Dir nicht auftritt, war ich ausgegangen (deshalb auch der zweimalige Hinweis "bei mir"), aber es war schon spät und ich hatte keine Lust mehr, der Sache nachzugehen ...bei mir ist es ohne
set /p macht doch gar keine Gänsefüschen drumherum
Hhhmmmm..,
Mit einer Umkehrung von "not" und "/i" klappt's übrigens auch bei mir:
if /i not "%proceed%" == "j" goto :eof
ich hab mal %windir%\system32 draufgezogen über 2300 Files nichtmal 2 sekunden also so lange dauerts nicht....
Die Ausgabe nicht, aber das Lesen ... Grüße
bastla
<OT>
@pieh-ejdsch
Außerdem werden wohl einige Worte südlich des Mittellandkanals zwar mit "ü" ("Hürsch", "Kürche", "Der Herr ist mein Hürte" , "Füschen" ) gesprochen, aber doch mit "i" geschrieben, oder?
P.S. Wir in Bremen würden auch niemals bei 10000 Dateien eine Vorschaufunktion auch nur andenken..*gg
Grüße
Biber
</OT>
@pieh-ejdsch
set /p macht doch gar keine Gänsefüschen drumherum
WTF ist "Gänsefüschen"??? So was wie Hochseeangeln für die armen Verwandten auf'm platten Land?Außerdem werden wohl einige Worte südlich des Mittellandkanals zwar mit "ü" ("Hürsch", "Kürche", "Der Herr ist mein Hürte" , "Füschen" ) gesprochen, aber doch mit "i" geschrieben, oder?
P.S. Wir in Bremen würden auch niemals bei 10000 Dateien eine Vorschaufunktion auch nur andenken..*gg
Grüße
Biber
</OT>
[OT]
@Biber
ja gut normal schon Gänsefüßchen statt Gänsefüschen....es war schon spät...
ist so der (/mein) sprachgebrauch für Anführungszeichen ....
leider weis ich kein Kürzeres Synonym dafür nur ein Längeres: Federfiehlatschen
[/OT]
ja das mit der Vorschau für 10.000 Files ist schon schlecht - stimmt
für zum Überfliegen der Vorschau bei wenigen 100 Files wäre es zum Prüfen vllt noch OK.
im Grunde hab ich es nur benutzt um bei mir zu testen.
das if /i not
was anderes ist als if not /i
wusste ich nicht vllt nur ein schusselfehler aber nicht mit absicht eingebaut.
Gruß Phil
PS. gibts noch ein Feedback vom Threadstarter?
@Biber
ja gut normal schon Gänsefüßchen statt Gänsefüschen....es war schon spät...
ist so der (/mein) sprachgebrauch für Anführungszeichen ....
leider weis ich kein Kürzeres Synonym dafür nur ein Längeres: Federfiehlatschen
[/OT]
ja das mit der Vorschau für 10.000 Files ist schon schlecht - stimmt
für zum Überfliegen der Vorschau bei wenigen 100 Files wäre es zum Prüfen vllt noch OK.
im Grunde hab ich es nur benutzt um bei mir zu testen.
das if /i not
was anderes ist als if not /i
wusste ich nicht vllt nur ein schusselfehler aber nicht mit absicht eingebaut.
Gruß Phil
PS. gibts noch ein Feedback vom Threadstarter?
hallo sk1412,
bei Dir lief das Ding mit Verschieben?
ich habe ja den Batch nur bis zum J N getestet und immer N gedrückt.
bei mir ging der Batch überhaupt nicht mit verschieben....warum - warscheinlich weil /i und not im IF net geht...KA
aber der Orndung halber einen korregierten Batch:
eine Rückieb Batch habe ich auch irgendwo hier auf der Platte rumliegen..ja war die denn .. so hier.
Achtung da Dürfen aber keine Dateiname identisch sein aber bei Deinen Files habne ja alle einen Vorsatz im Dateinamen der den Ordner entspricht. die Ordner werden anschliesend alle wieder gelöscht. wenn Du das net willst dann entferne && rmdir %%i
so ab inne haia muss morgen meine Kisten & Säcke Packen und Möbel zerlegen.
Gruß Phil
bei Dir lief das Ding mit Verschieben?
ich habe ja den Batch nur bis zum J N getestet und immer N gedrückt.
bei mir ging der Batch überhaupt nicht mit verschieben....warum - warscheinlich weil /i und not im IF net geht...KA
aber der Orndung halber einen korregierten Batch:
:: ------- schnipp movefiles2-0,6-namefolder.bat
@echo on & setlocal
if exist "%~1" (pushD "%~1") else goto :eof
set "Vorschau="& set "proceed="
echo.Es erfolgt erst eine Vorschau&echo.& ping localhost -n 3 >nul
:begin
if not defined Vorschau (set "Vorschau=@echo."&goto :proceed) else set "Vorschau="
echo.&echo.&echo.
set /p proceed=Moechtest Du die Daten wie es angezeigt wurde Verschieben? [J] [N]
if /i "%proceed%" == "j" (echo. >nul) else goto :eof
:proceed
for %%i in (*) do (set "name=%%i"
setlocal enabledelayedexpansion
%Vorschau%
if exist "!name:~0,6!" (%Vorschau%move "!name!" "!name:~0,6!\!name!"
) else %Vorschau%mkdir "!name:~0,6!" && %Vorschau%move "!name!" "!name:~0,6!\!name!"
endlocal
)
if not defined proceed goto :begin
popD
pause
:: ------- schnapp movefiles2-0,6-namefolder.bat
eine Rückieb Batch habe ich auch irgendwo hier auf der Platte rumliegen..ja war die denn .. so hier.
Achtung da Dürfen aber keine Dateiname identisch sein aber bei Deinen Files habne ja alle einen Vorsatz im Dateinamen der den Ordner entspricht. die Ordner werden anschliesend alle wieder gelöscht. wenn Du das net willst dann entferne && rmdir %%i
pushD "%~1"
for /f "tokens=*" %%i in ('dir /a:d /b') do (move "%%i\*.*" && rmdir %%i)
so ab inne haia muss morgen meine Kisten & Säcke Packen und Möbel zerlegen.
Gruß Phil