Top-Themen

Aktuelle Themen (A bis Z)

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, 3267 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
Per Batch Dateien aus Unterordner verschieben
gelöst Frage von ministaBatch & Shell10 Kommentare

Hallo Zusammen Ich habe folgende Struktur: Ich möchte nun dass alle Dateien aus dem Ordner B und deren Subordner ...

Batch & Shell
Batch Datei zum verschieben von Dateien aus Unterordnern ?
gelöst Frage von Ghostrider1911Batch & Shell10 Kommentare

Hallo, ich bräuchte eine Batch Datei die Dateien aus Unterordnern verschiebt. Also ich habe folgende Verzeichniss Struktur: Z:\Dateien\Ordner1\M1\ Z:\Dateien\Ordnärx\M1\ ...

VB for Applications
VBS oder Batch um eine Datei in Unterordner zu verschieben
Frage von MrRoyalVB for Applications1 Kommentar

Hallo zusammen, ich bin neu hier und kenne mich leider im Bereich VBS und Batch nicht so gut aus. ...

Batch & Shell
Batch für Verschieben von Datein, vergleichen, löschen und umbennen
Frage von erik10Batch & Shell

Hallo zusammen, ich möchte gern Dateien aus bestimmten Ordnern verschieben und dabei vorher umbenennen, das ein order andere habe ...

Neue Wissensbeiträge
Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.Cilin vor 1 StundePerl1 Kommentar

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 2 StundenSicherheit

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 108 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 2 TagenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless11 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Router & Routing
Wieso kann ich den UPD 7000-9000 nicht freigeben?
Frage von Jayk0bRouter & Routing8 Kommentare

Router: Telekom W 723V Ports: UDP 7000-9000 Können nicht frei gegeben werden. Benutzgrund: Rocket League 7000 – 9000 UDP ...

Router & Routing
Fritzbox Gastnetz - exposed Host - zur Sophos IPTV
Frage von medikopterRouter & Routing8 Kommentare

Hallo zusammen, ich habe eine Frage bezüglich des Fritz box Gastzugangs an einer Sophos UTM Home. An liebsten wäre ...