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
Kommentar vom Moderator Biber am 26.02.2012 um 14:17:40 Uhr
Verschoben von "Tools & Utilities" nach "Batch & Shell".
GELÖST

Batch Eine bestimmte Anzahl von Dateien kopieren, Zielordne ist aber leer

Frage Entwicklung Batch & Shell

Mitglied: sugram

sugram (Level 1) - Jetzt verbinden

21.02.2012, aktualisiert 18.10.2012, 6816 Aufrufe, 15 Kommentare

Hallo

Ich hoffe das hier mir jemand weiterhelfen kann

Folgendes Problem.

Ich habe hier mehrere Ordner in denen immer neue Bilder reinkommen. Diese werden für uns für eine Analyse benötigt.
Da man aber meist nicht alle benötigt, sondern nur die letzten 20 oder 30 neuesten, dachte ich ich löse das mit ner Batch,
Allerdings bin ich da jetzt an meine Grenzen gestoßen.
Somit, ist es möglich von mehreren Ordnern nur die letzten 20 neuesten Dateien zu kopieren, wobei der Zielordner leer ist?!

Vielen Dank schon mal.
Mitglied: 105215
21.02.2012 um 09:15 Uhr
Moin,

ich würde dies via robocopy machen. An diesem Thema Robocopy bin ich auch gerade dran!!! Das Tool ist echt super und dort kannst duch da es sich am Besten mit cmd Befehlen handelt kannst du die Befehle direkt in ein Batch eingeben.

Gruß
Karsten
Bitte warten ..
Mitglied: 60730
21.02.2012 um 10:05 Uhr
moin,

Somit, ist es möglich von mehreren Ordnern nur die letzten 20 neuesten Dateien zu kopieren, wobei der Zielordner leer ist?!

Yupp das ist durchaus möglich, allerdings würde ich die Reihenflge umdrehen und die ersten Treffer solange kopieren, bis 20 erreicht ist.

PS:
Sicherlich willst du das per Batch erledigen, also wäre die Fragestellung besser unter Batch aufgehoben.
Bitte warten ..
Mitglied: bastla
21.02.2012 um 11:42 Uhr
Hallo sugram und willkommen im Forum!

Sollte sich (ungetestet) etwa so machen lassen:
01.
@echo off & setlocal 
02.
set "Quelle=D:\Ordner mit neuen Bildern" 
03.
set "Typ=jpg" 
04.
set "Ziel=D:\Zielordner" 
05.
set /a Anzahl=20 
06.
 
07.
pushd "%Quelle%" 
08.
for /f "delims=" %%i in ('dir /b /o-d *.%Typ%') do call :ProcessFile "%%i" 
09.
popd 
10.
goto :eof 
11.
 
12.
:ProcessFile 
13.
set /a Anzahl-=1 
14.
if %Anzahl% geq 0 copy %1 "%Ziel%" 
15.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: pieh-ejdsch
21.02.2012 um 13:28 Uhr
moin,

das geht sogar auch ohne Unterprogram:
auch in der CMD-Line

wobei der Zielordner leer ist?!
01.
@echo off & setlocal 
02.
set "Quelle=D:\Ordner mit neuen Bildern" 
03.
set "Typ=jpg" 
04.
set "Ziel=D:\Zielordner" 
05.
if exist "%Ziel%\*%Typ%" exit /b 1 
06.
set /a Anzahl=20 
07.
 
08.
pushd "%Quelle%" 
09.
set /a x=Anzahl+1 
10.
(for /f "delims=" %%i in ('dir /b /o-d *.%Typ%') do @set /a x-=1,y=1/x &&>&3  copy "%%i" "%Ziel%" || set /a x=1) >nul 2>nul 
11.
popD
[Edit]
hinweis von bastla - berichtigt.
[/Edit]

Gruß Phil
Bitte warten ..
Mitglied: bastla
21.02.2012 um 17:57 Uhr
@PH
das geht sogar auch ohne Unterprogram
... aber wohl doch nur mit %Typ%

Ansonsten tut's auch:
for /f "tokens=1* delims=:" %%i in ('dir /b /o-d *.%Typ%^|findstr /n "^"') do if %%i leq %Anzahl% copy "%%j" "%Ziel%"
Grüße
bastla
Bitte warten ..
Mitglied: sugram
22.02.2012 um 13:00 Uhr
VIELEN VIELEN Dank euch allen!

Ich habe das Programm ohne Unterprogramm getestet und funktioniert klasse!
Nur eine Frage habe ich hierzu, das kopieren / suchen dauert da schon lange. Habe für 5 Dateien ca 30 -40 sec gebraucht.

Gruß sugram

P.S.: Ich bin dennoch happy und schmeiß mal ne runde )
Bitte warten ..
Mitglied: bastla
22.02.2012 um 13:12 Uhr
Hallo sugram!
Habe für 5 Dateien ca 30 -40 sec gebraucht.
Ich kann mir eigentlich nicht vorstellen, dass das am Batch liegt - auch wenn Du meine zuletzt gepostete Zeile als Ersatz der Zeile 8 im ursprünglichen Batch verwendest (die Zeilen 12 bis 15 werden dann nicht mehr benötigt) und damit testest, sollte es keinen nennenswerten Unterschied in der Laufzeit geben ...

Wie viele Bilder befinden sich denn im fraglichen Ordner, und wo liegt dieser (auf einer lokalen Platte oder auf einem Netzlaufwerk / NAS)?

Grüße
bastla
Bitte warten ..
Mitglied: sugram
22.02.2012 um 13:37 Uhr
Hallo

Nun die Bilder liegen auf einem Netzlaufwerk, die Anzahl der Bilder kann hier schon mal auf 1000 oder mehr ansteigen. Ich denke das es dann daran liegen wird.
Immerhin funktioniert das ganze, dann muß man halt warten

Gruß sugram
Bitte warten ..
Mitglied: sugram
22.02.2012 um 22:55 Uhr
So, hätte doch noch eine Frage dazu und hoffe, daß diese auch beantwortet werden kann.

Die Lösung ist ja so konzipiert, daß der exakte Zielpfad als Quelle angegeben wird.
Ich veranschauliche mal mein "Problem"
Die Bilder sind von einem Objekt mit 6 Seiten, von jeder Seite existieren Bilder. Natürlich brauch ich alle Bilder von allen Seiten. Dabei ist die Ordnerstruktur so aufgebaut:

\\share\Objekt1\seite1
\\share\Objekt1\seite2
\\share\Objekt1\seite3
usw.

mir dir /s bekomme ich dann zwar das Directorylisting unter objekt1 hin, aber wie veranlasse ich dann xcopy / copy das noch in das richtige Unterverzeichnis zu kopieren?

Danke schon mal im voraus
Bitte warten ..
Mitglied: bastla
22.02.2012 um 23:02 Uhr
Hallo sugram!

Ungetestet etwa so:
01.
@echo off & setlocal 
02.
set "Quelle=\\share\Objekt1" 
03.
set "Typ=jpg" 
04.
set "Ziel=D:\Zielordner" 
05.
set /a Anzahl=20 
06.
 
07.
for /d %%a in ("%Quelle%\*") do for /f "tokens=1* delims=:" %%i in ('dir /b /o-d "%%a\*.%Typ%"^|findstr /n "^"') do if %%i leq %Anzahl% xcopy "%%a\%%j" "%Ziel%\%%~nxa\"
Zielordner wären in diesem Fall "D:\Zielordner\seite1", "D:\Zielordner\seite2", ... und kopiert werden jeweils 20 Dateien ...

Grüße
bastla
Bitte warten ..
Mitglied: sugram
26.02.2012 um 09:50 Uhr
Vielen Dank, klappt wunderbar!


Dennoch eine Frage, der String arbeitet ja dann das ganze Verzeichnis durch. Also wenn 1000 Dateien enthalten sind, dann kann das dauern.
Wäre es möglich das er dann nach 20 einfach abbricht, da ja die Anzahl schon erreicht ist.

Ich glaube langsam ich nerve euch, aber ich bekomme das leider nicht hin.

Gruß sugram
Bitte warten ..
Mitglied: 60730
26.02.2012 um 12:06 Uhr
Zitat von sugram:
Vielen Dank, klappt wunderbar!
Ich glaube langsam ich nerve euch, aber ich bekomme das leider nicht hin.

Moin,
Wenn du mich damit meinst, ja - denn ich schrieb dir gleich verschiebe die frage nach batch & shell.

Und was deinen aenderungswunsch angeht,


Edit so viel lesen musst du garnicht, denn achon seine erste antwort zielt genau dahin.

Versuche mal ein paar geloeste threads vom bastla anzusehen, er arbeitet gerne mit unterprogrammen.

Mit anderen worten,, jetzt kaut er (die batch) Alles durch und mit einer simplen anpassung koennte die locker alles unter 20 abarbeiten und dann abbrechen.

Dazu musst du aber jeden ordner seperat ansprechen und nicht wie jetzt einen samt unterordnern.

Also versuch mal, meinen vorschlaegen zu folgen, denn wir koennen das-aber davon lernst du nix.
Und dann finde ich es immer schade, wenn man versucht den fragestellern einen tipp zu geben und wenn man dan merken darf, das der in den wind geschrieben wird- hat man(ich) keine lust mehr.

Gruss

Gruss
Bitte warten ..
Mitglied: sugram
26.02.2012 um 12:40 Uhr
Das war allgemein gemeint.

Ich versuche das ich das hin bekomme. Denn ich kann dich / euch schon verstehen wenn keine Lust mehr habt, weil ihr damit richtig liegt, daß man so nix lernt.
Wie ist es denn meistens, die Lösung ist manchmal so einfach, aber man sieht sie nicht, weil man zu kompliziert denkt.

Also nicht's für ungut ich danke euch ALLEN!


Gruß sugram
Bitte warten ..
Mitglied: bastla
26.02.2012, aktualisiert 18.10.2012
@T-Mo
Das Abbrechen von Schleifen ist so eine Sache für sich ...

Ich würde eher zu einem anderen Ansatz (dem Gegenteil Deiner ursprünglichen Idee) greifen - ungetestet etwa so:
01.
@echo off & setlocal 
02.
set "Quelle=\\share\Objekt1" 
03.
set "Typ=jpg" 
04.
set "Ziel=D:\Zielordner" 
05.
set /a Anzahl=20 
06.
 
07.
for /d %%a in ("%Quelle%\*") do call :ProcessDir "%%a" 
08.
goto :eof 
09.
 
10.
:ProcessDir 
11.
set /a Skip=0 
12.
for /f %%i in ('dir "%~1\*.%Typ%"^|findstr "Datei(en)" 2^>nul') do set /a Skip=%%i - Anzahl 
13.
if %Skip% lss 0 set /a Skip=0 
14.
for /f "delims=" %%i in ('dir /b /od /a-d "%~1\*.%Typ%"^|more +%Skip%') do xcopy "%~1\%%i" "%Ziel%\%~nx1\" 
15.
goto :eof
Aus edukativen Gründen verzichte ich (vorläufig) auf eine Erkklärung der Vorgangsweise ...

Grüße
bastla
Bitte warten ..
Mitglied: sugram
02.03.2012 um 06:40 Uhr
@bastla

VIELEN DANK!!

Klappt wunderbar, mußte nur den String "Datei(en)" in "File(s) ändern.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Wenn bestimmtes Datum dann bestimmte Datei kopieren
gelöst Frage von rohu2007Batch & Shell31 Kommentare

Hallo Zusammen, ich komme leider nicht weiter. Ich möchte eine Datei kopieren, wenn ein bestimmtes Datum eintrifft. Das heutige ...

Batch & Shell
Per Batch nur neueste Datei mit bestimmten Dateianfang kopieren
gelöst Frage von Peter32Batch & Shell3 Kommentare

Hallo, ich habe schon einiges gegoogled, allerdings habe ich noch keine 100%ige Lösung für mein Problem gefunden. Ich habe ...

Microsoft
Batch Datei zum Kopieren bestimmter ordner mit Pfad
gelöst Frage von eivloxMicrosoft6 Kommentare

Hallo zusammen , Hab schon ein bisschen gegoogled aber nichts passendes gefunden . Folgendes Problem: Ich möchte einen Ordner ...

VB for Applications
Wenn bestimmte Datei leer dann Script ausfürhen sonst nicht
gelöst Frage von aletriVB for Applications10 Kommentare

Guten Abend allerseits Dieser Script löscht einen bestimmten Eintrag in der Scener.cfg des Flugsimulators und funktioniert soweit: Nun sollte ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 19 StundenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 TagWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 1 TagWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement15 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows XP
Windows XP Aktivieren geht nicht
Frage von tetikmiroWindows XP13 Kommentare

Hallo Ich habe einen Windows XP mit einen vCenter Converter umgezogen auf eine ESXI. Soweit funktioniert dies auch ohne ...