spidi-25
Goto Top

Per CMD Sortieren

Hallo bastla

ich hätte eine Bitte an dich,vor Zeiten hast du mir eine tolle CMD erstellt Datei Verwaltung


meine frage ist, was muss an der CMD geändert werden damit folgendes gemacht werden kann:


z.B. es befinden sich Dateien im Ordner

4174_100_020_00.dwg
4174_100_020_01.dwg
4174_100_020_02.dwg
4174_100_021_00.dwg
4174_100_021_01.dwg
4174_100_021_02.dwg
4174_100_025_01.dwg

nach der CMD Ausführung


Folgende Dateien behalten
4174_100_020_02.dwg
4174_100_021_02.dwg
4174_100_025_01.dwg

und folgende Dateien in den Ordner alt verschieben
4174_100_020_00.dwg
4174_100_020_01.dwg
4174_100_021_00.dwg
4174_100_021_01.dwg


im Prinzip Daten mit dem höchsten Index sollen bleiben (sie unten) Rest nach alt verschieben, dabei sind die Stellen 10 bis 12 zu berücksichtigen

(xxxx_xxx_xxx_Index)


habe es mit folgendem Code probiert

@echo off & setlocal 


for %%t in (DWG) do ( 
    for /f %%i in ('dir /b /on /a-d *_*_*_*.%%t') do (   

        for /f "tokens=1-4 delims=_" %%a in ("%%~ni") do (   
            md "%Ziel%%%a_%%b" 2>nul  
            md "alt" 2>nul   
            move "%%i" "%Ziel%%%a_%%b\">nul   
            for /f "skip=1 delims=" %%x in ('dir /b /o-n /a-d "%Ziel%%%a_%%b\%%a_%%b_%%c_*%%~xi"') do move "%Ziel%%%a_%%b\%%x" "alt"   
        ) 
    ) 
) 
popd



Damit wird außer des alt Ordners in den auch die alten Daten verschoben werden, wie gewollt , auch noch ein Ordner zu viel angelegt und die Dateien die ich behalten möchte hinein geschoben.


Ich bedanke mich im voraus für die hilfe!

Content-Key: 146138

Url: https://administrator.de/contentid/146138

Ausgedruckt am: 28.03.2024 um 14:03 Uhr

Mitglied: bastla
bastla 02.07.2010 um 18:26:36 Uhr
Goto Top
Hallo Spidi-25!

Der Ansatz war schon ziemlich gut face-smile - so sollte es dann eigentlich klappen:
for %%t in (DWG) do (
    for /f %%i in ('dir /b /on /a-d *_*_*_*.%%t') do (   
        for /f "tokens=1-4 delims=_" %%a in ("%%~ni") do (   
            md "%Ziel%%%a_%%b" 2>nul  
            md "alt" 2>nul  
            move "%%i" "%Ziel%%%a_%%b\">nul   
        ) 
    )
    for /d %%v in (%Ziel%*.*) do (
        for %%i in ("%%v\*_*_*_*.%%t") do (  
            for /f "tokens=1-4 delims=_" %%a in ("%%~ni") do (  
                for /f "skip=1 delims=" %%x in ('dir /b /o-n /a-d "%%v\%%a_%%b_%%c_*%%~xi"') do move "%%v\%%x" "alt"   
            )
        )
    )
)
[Edit] Korrektur wegen falscher "Ansiedelung" des "alt"-Ordners vorgenommen [/Edit]

Grüße
bastla
Mitglied: Spidi-25
Spidi-25 02.07.2010 um 22:33:23 Uhr
Goto Top
Hallo bastla

Eigendlich bekomme ich das gleiche ergebnis wie mit dem Code von meinem schreiben!

Kann man nicht die Zeilen 04,06, (Ziel) weglassen, den Code so erstellen damit kein Unterordner außer der alt Ordner erstellt wird und die Daten mit dem kleineren Index hinein geschoben werden?

Grüße

Spidi-25
Mitglied: bastla
bastla 02.07.2010 um 22:48:34 Uhr
Goto Top
Hallo Spidi-25!

Dann sollte tatsächlich
@echo off & setlocal 
md "alt" 2>nul  
for %%t in (DWG) do (
    for %%i in ("*_*_*_*.%%t") do (  
        for /f "tokens=1-4 delims=_" %%a in ("%%~ni") do for /f "skip=1 delims=" %%x in ('dir /b /o-n /a-d "%%a_%%b_%%c_*%%~xi"') do move "%%x" "alt\"   
    )
)
genügen ...

Grüße
bastla
Mitglied: Spidi-25
Spidi-25 02.07.2010 um 23:14:04 Uhr
Goto Top
Perfekt, genau das habe ich gesucht vielen vielen dank!!!!!!!!!!!!!