Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch Datein aus Unterordnern in einen Hauptordner verschieben und Durchnummerieren

Frage Entwicklung Batch & Shell

Mitglied: Darkprodukt

Darkprodukt (Level 1) - Jetzt verbinden

08.08.2012, aktualisiert 01:52 Uhr, 3203 Aufrufe, 6 Kommentare

Guten Abend,

Ich habe mal wieder en kleines Problem...

Ich habe einen Hauptordner in dem sich eine sehr große Ordnerstrucktur befindet.
Auserdem noch so ca 30.000-150.000 Datein.

Um das unwichtige schonmal zu beseitigen, werde ich alle Datein <50kb Löschen.
http://www.administrator.de/frage/Batch-Dateien-unter-bestimmter-Gr%C3% ...

Nun möchte ich alle übrig geblieben Datein in einen Ordner verschieben (also ohne ordnerstruktur)
und diese Durchnummerieren das sie so aussehen.

000001
000002
...

Wie ich diese Nummerierung mache wenn schon alle Datein in einem ordner sind, weiß ich.

Das Problem ist, dass es manche Dateinamen schon gibt. Also müssten sie schon beim verschieben umbenant werden.

Mir schwirren schon so einige Lösungsansätze vor, aber mal schaun was ihr noch so drauf habt.

Ich setz mich mal dran mal gespannt obs ich sogar noch selbst hinbekomme.

Grüße
Darkprodukt

Edit1:
Ich denke das müste so in etwa aussehen, aber leider Beendet sich das ding ohne einen mucks...


Natürlich muss das @echo in der 1. for-schleife gelöscht und das @echo in der 2. zu move geändert werden.
01.
@echo off & setlocal 
02.
 
03.
set /a count=1000001 
04.
set /p "Ordner=Ordner: " 
05.
set /p "Ziel=Ziel: " 
06.
 
07.
for /f %%i in ('dir /a-s-h-d /b /s "%Ordner%"') do @if %%~zi lss 40000 @echo del "%%i" 
08.
 
09.
for /f %%i in ('dir /a-s-h-d /b /s "%Ordner%') do set "datei=%%i" ^ 
10.
												  &setlocal enabledelayedexpansion ^ 
11.
												  &@echo "!datei!" "!Ziel!!count:~-6!%%~xj" ^ 
12.
												  &set /a count=count+1 ^ 
13.
												  &endlocal 
14.
 
15.
echo Abgeschlossen 
16.
pause
Mitglied: Biber
08.08.2012 um 05:35 Uhr
Moin Darkprodukt,

ohne auf die Sinnhaftigkeit des Plans einzugehen wäre dein Ansatz ungefähr so lauffähig:
01.
@echo off & setlocal enabledelayedexpansion 
02.
 
03.
set /a count=1000001 
04.
set /p "Ordner=Ordner: " 
05.
set /p "Ziel=Ziel: " 
06.
 
07.
for /f %%i in ('dir /a-s-h-d /b /s "%Ordner%"') do @if %%~zi lss 40000 @echo del "%%i" 
08.
 
09.
for /f %%i in ('dir /a-s-h-d /b /s "%Ordner%"') do ( 
10.
		echo move "%%i" "%Ziel%\!count:~-6!%%~xi" 
11.
		set /a count+=1  
12.
13.
echo Abgeschlossen 
14.
pause
P.S. Zwei der goldenen Regeln sowohl beim Sich-Ausprobieren in Batch wie auch im Kamasutra:
  • Kompliziert wird es von allein.
  • Kunstvolle Verrenkungen haben nicht immer etwas Graziles an sich.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
08.08.2012 um 07:04 Uhr
Hallo Biber!

Dass "delayedexpansion" sich auch bei den Laufvariablen von "for"-Schleifen auswirkt, hatte ich auch lange nicht beachtet - daher vielleicht doch:
01.
@echo off & setlocal 
02.
 
03.
set /a count=1000001 
04.
set /p "Ordner=Ordner: " 
05.
set /p "Ziel=Ziel: " 
06.
 
07.
if "%Ziel:~-1%"=="\" set "Ziel=%Ziel:~,-1%" 
08.
for /f "delims=" %%i in ('dir /a-s-h-d /b /s "%Ordner%"') do @if %%~zi lss 40000 @echo del "%%i" 
09.
 
10.
for /f "delims=" %%i in ('dir /a-s-h-d /b /s "%Ordner%"') do ( 
11.
    set "Datei=%%i" 
12.
    setlocal enabledelayedexpansion 
13.
    echo move "!Datei!" "%Ziel%\!count:~-6!%%~xi" 
14.
    endlocal 
15.
    set /a count+=1 
16.
17.
echo Abgeschlossen 
18.
pause
Grüße
bastla
Bitte warten ..
Mitglied: Biber
08.08.2012, aktualisiert um 07:49 Uhr
Moin bastla,

ist mir zwar abstrakt einsichtig, aber bei welchem Inhalt der Variablen %Datei% könnte denn ein Unterschied auftreten zwischen dem aufgelösten
echo move "!Datei!" "%Ziel%\!count:~-6!%%~xi" versus echo move "%%i" "%Ziel%\!count:~-6!%%~xi" ??

Oder an welcher Stelle wird durch das setlocal enabledelayedexpansion innerhalb der FOR-Anweisung ein Problem vermieden?

Grüße
Biber
Bitte warten ..
Mitglied: bastla
08.08.2012, aktualisiert um 10:17 Uhr
Hallo Biber!

Mit einer zusätzlichen Zeile
    echo move "%%i" "%Ziel%\!count:~-6!%%~xi"
und den folgenden Dateien:
D:\>dir "Dieser! Ordner" 
 Datenträger in Laufwerk D: ist Volume 
 Volumeseriennummer: 1234-5678 
 
 Verzeichnis von D:\Dieser! Ordner 
 
08.08.2012  09:54    <DIR>          . 
08.08.2012  09:54    <DIR>          .. 
08.08.2012  09:55                 2 Zwei ! im Namen.txt 
08.08.2012  09:55                 2 Wirklich zwei !! im Namen.txt 
               2 Datei(en)              4 Bytes 
               2 Verzeichnis(se), 69.363.770.624 Bytes frei
sieht das etwa so aus:
D:\>NummeriertZusammenfassen.cmd 
Ordner: Dieser! Ordner 
Ziel: X:\ 
del "D:\Dieser! Ordner\Zwei ! im Namen.txt" 
del "D:\Dieser! Ordner\Wirklich zwei !! im Namen.txt" 
move "D:\Dieser! Ordner\Zwei ! im Namen.txt" "X:\000001.txt" 
move "D:\Dieser im Namen.txt" "X:\000001.txt" 
move "D:\Dieser! Ordner\Wirklich zwei !! im Namen.txt" "X:\000002.txt" 
move "D:\Dieser\000002.txt" 
Abgeschlossen 
Drücken Sie eine beliebige Taste . . .
Grüße
bastla
Bitte warten ..
Mitglied: Biber
08.08.2012 um 10:42 Uhr
Moin bastla,

okay, okay.... ja, es könnte vorkommen.

In "Per Anhalter durch die Galaxis" wird so etwas als Antrieb für Raumschiffe benutzt.

Wahrscheinlich wird der Batchschnipsel dennoch abrauchen, weil plötzlich ein fliederfarbener Meteorit die USV des Unternehmens durchschlägt...

Danke und Grüße
Biber
Bitte warten ..
Mitglied: Darkprodukt
08.08.2012 um 14:16 Uhr
Ich danke euch beiden...

Ich konnte jezt die Datein von 45.000 auf 1.200 verringern und kan so
erhebliche laufzeiten meines Analyse Programms sparen.

Die kleinen Datein waren deshalb unwichtig, da sie eigentlich
den inhalt der großen hatten blos auf viele kleine verteilt.

Grüße
Darkprodukt
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch Ordner erstellen und verschieben (6)

Frage von Fromeonly zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Datei zum verschieben von Dateien aus Unterordnern ? (10)

Frage von Ghostrider1911 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...