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, 3245 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 ..
Ähnliche Inhalte
Batch & Shell
Batch - Unterodner im Unterordner des Unterordners (2)

Frage von josijosua zum Thema Batch & Shell ...

Batch & Shell
Batch: Files verschieben ohne Überschreiben der Bestehenden (1)

Frage von maegee zum Thema Batch & Shell ...

Neue Wissensbeiträge
Linux Netzwerk

Ping und das einstellbare Bytepattern

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(3)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
SAN, NAS, DAS
MSA 2050 RAID Konfig (21)

Frage von Leo-le zum Thema SAN, NAS, DAS ...

Netzwerkmanagement
Windows Server 2008 R2: "netsh reset" nicht verfügbar? (10)

Frage von RickTucker zum Thema Netzwerkmanagement ...

Netzwerkmanagement
Suche eine Software für Cloudverwaltung (6)

Frage von tsunami zum Thema Netzwerkmanagement ...

Google Android
Musik Wiedergabe am PC mit Smartphone über Bluetooth steuern (5)

Frage von justlukas zum Thema Google Android ...