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 Verschieben von bestimmter Anzahl von Dateien aus vollem Ordner dauert zu lange

Mitglied: mkdeluxe

mkdeluxe (Level 1) - Jetzt verbinden

19.02.2015, aktualisiert 20.02.2015, 726 Aufrufe, 2 Kommentare

Hallo zusammen,

ich hoffe ihr könnt mir helfen, ich bin nach langer Zeit mal wieder im Batch-Umfeld unterwegs (sonst eher C# u.ä.) und benötige ein Script, mit dessen Hilfe ich eine bestimmte Anzahl von Dateien von einem in ein anderes Verzeichnis verschiebe. Wichtig ist, dass immer die ältesten zuerst verschoben werden. Wenn die definierte Anzahl an Files verschoben wurde, soll das Script beendet werden.

Mein Lösung (siehe unten) verschiebt zwar die gewünschten Files in das gewünschte Verzeichnis, läuft aber danach noch lange weiter, da das Ausgangsverzeichnis sehr voll ist und der ELSE-Zweig mit dem goto :eof nicht greift. Ich hoffe auf eure Hilfe...

01.
set StartFolder=C:\DATA\Test\ 
02.
set TargetFolder="C:\DATA\Test2\" 
03.
set SearchString="Update*.xml" 
04.
set Found="" 
05.
set /a Numbers=1 
06.
set Count=1000 
07.
 
08.
FOR /F "delims=" %%z IN ('dir %StartFolder%%SearchString% /OD /B') Do @( 
09.
	IF %Numbers% LEQ %Count% ( 
10.
		call :MoveFile "%%z" 
11.
		) ELSE ( GOTO :EOF	) 
12.
13.
 
14.
:MOVEFile 
15.
SET Found="%~1" 
16.
IF %Numbers% LEQ %Count% (MOVE %StartFolder%%Found% %TargetFolder% 
17.
SET /a Numbers= %Numbers%+1 )
Wie kann ich das besser lösen? Wo ist der Fehler im Ansatz? Könnt ihr mich anschubsen?

Danke für die Hilfe und viele Grüße
Mitglied: rubberman
LÖSUNG 19.02.2015, aktualisiert 20.02.2015
Hallo mkdeluxe.

  • Die FOR /F Schleife puffert zunächst die gesamte Ausgabe des DIR Befehls, bevor der Schleifenrumpf überhaupt abgearbeitet wird. Das wirst du nicht vermeiden können, da du die Ausgabe mit /OD vorsortiert haben möchtest.
  • Der Aufruf einer Subroutine kostet Zeit. Wenn du alles im Schleifenrumpf abarbeitest, wird das etwas schneller gehen.
  • Variablen werden in einer Kommandozeile oder einem (in Klammern eingeschlossenen) Block von Kommandozeilen nur einmal zum Wert erweitert, und zwar noch vor der Abarbeitung dieses Codes. Dein Schleifenrumpf ist so ein Block, deshalb bleibt %Numbers% beim Vergleich auch immer 1. Die "Verzögerte Variablenerweiterung" schafft Abhilfe.

Ungetestet:
01.
@echo off &setlocal 
02.
set "StartFolder=C:\DATA\Test\" 
03.
set "TargetFolder=C:\DATA\Test2\" 
04.
set "SearchString=Update*.xml" 
05.
set /a "Numbers=1, Count=1000" 
06.
 
07.
for /F "delims=" %%z in ('dir "%StartFolder%%SearchString%" /OD /B') do ( 
08.
  set "Found=%%z" 
09.
  setlocal EnableDelayedExpansion 
10.
  if !Numbers! LEQ !Count! ( 
11.
    move "!StartFolder!!Found!" "!TargetFolder!" 
12.
  ) else ( 
13.
    goto :EOF 
14.
15.
  endlocal 
16.
  set /a "Numbers += 1" 
17.
)
Grüße
rubberman
Bitte warten ..
Mitglied: mkdeluxe
20.02.2015 um 09:30 Uhr
Hallo rubberman,

danke für die Hilfe! Es funktioniert wie gewünscht. "EnableDelayedExpansion"... das erklärt vieles! Danke für die Lösung und für die Erklärungen!

Grüße
mkdeluxe
Bitte warten ..
Ähnliche Inhalte
Windows Tools

Bestimmte Anzahl an Dateien aus einem Verzeichnis in ein anderes verschieben

gelöst Frage von wernerzWindows Tools5 Kommentare

Hi, ich sitze jetzt hier schon seit Stunden und versuche mit allen möglichen Befehlen es selbst hin zu bekommen, ...

Batch & Shell

Batch: bestimmte Datei finden und den Ordner verschieben

gelöst Frage von Gari.onBatch & Shell9 Kommentare

Hallo! ich hoffe ich bin hier richtig, es geht um folgendes Problem: in einem Ordner liegen mehrere Unterordner mit ...

Batch & Shell

Ordner durchsuchen - wenn "bestimmter Text" in einer Datei enthalten, diese Datei in einen anderen Ordner kopieren oder verschieben

gelöst Frage von ConcurveBatch & Shell14 Kommentare

Hallo zusammen, ich habe ein Problem bei der Erstellung einer *.bat, welche innerhalb eines zu definierenden Ordners alle Dateien ...

Batch & Shell

Bestimmte Anzahl von Dateien aus einem Ordner in einen neu erstellten Ordner schieben

Frage von BustedDice2018Batch & Shell2 Kommentare

Hallo zusammen habe ein Problem, ich möchte mit einem Batch immer 100 Dateien z.B. Bilder aus einem Ordner in ...

Neue Wissensbeiträge
Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 4 StundenWindows Update

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Microsoft Office

MS Office 2019 ohne OneNote - OneNote App speichert nur in Cloud

Information von Deepsys vor 15 StundenMicrosoft Office2 Kommentare

Microsoft zeigt deutlich wohin alles bei Ihnen geht, OneNote 2019 wird es nicht mehr geben, und die Windows 10 ...

Humor (lol)

Warum man sein Gast-WLAN nicht beliebig nennen sollte

Erfahrungsbericht von Henere vor 1 TagHumor (lol)5 Kommentare

Servus, mal was aus dem Alltag. Zu Hause. Eigentlich wollte ich nur einen weiteren WLAN-AP ins Netz bringen, damit ...

Sicherheit

Schwachstelle in Intel SPI Flash Firmware kann manipuliert werden

Information von sabines vor 2 TagenSicherheit

Es existiert ein Problem in einigen Intel Chipsätzen, das durch einen lokalen Angreifer genutzt werden könnte. Die Firmware befindet ...

Heiß diskutierte Inhalte
Off Topic
1st , 2nd Level Support Techniker - Patchfeld und Switche etc.
Frage von pixel0815Off Topic30 Kommentare

Moin zusammen, ich weiß gar nicht ob es hier richtig ist, aber mich würde mal interessieren wie ihr das ...

Windows Netzwerk
LAN nur 10MB pro s trotz gb lan
Frage von tsunamiWindows Netzwerk19 Kommentare

Hallo zusammen, ich brauche mal wieder einen Anstoß in die richtige Richtung. Ich habe einen Windows 10 pc mit ...

Festplatten, SSD, Raid
Server SSD: NVMe PCIe 3.0 RAID?
Frage von bouneeFestplatten, SSD, Raid14 Kommentare

Hallo liebe Admins, mir stellt sich gerade die Frage, ob ein neuer Server mit SSD NVMe PCIe 3.0 Sinn ...

Windows 10
Windows 10 Startmenü-Einstellungen Systemweit festlegen
Frage von flotautWindows 1013 Kommentare

Guten Morgen liebe Admins, wir möchten bei uns am Lehrstuhl demnächst auf Windows 10 umsteigen. Wir installieren unsere PC's ...