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 - Ordner nach aktuellen Dateien durchsuchen und kopieren

Frage Entwicklung Batch & Shell

Mitglied: DeeJayBee

DeeJayBee (Level 1) - Jetzt verbinden

10.05.2013, aktualisiert 11:59 Uhr, 3043 Aufrufe, 10 Kommentare

Hallo zusammen,

diesmal habe ich ein kleines Problem mit einem Batchprogramm.


Ich benötige ein Script, welches stündlich (per Taskplaner) einen Ordner C:\Daten\xls nach neuen Dateien durchsucht.
Wenn neue Dateien gefunden wurden, sollen diese neuen Dateien (und nur die) in einen weiteren Ordner C:\Daten\xls_temp kopiert werden.

Wie kann ich das am besten realisieren?


Mein Ansatz war folgender:

set "Datum=%date:~3,2%-%date:~0,2%-%date:~-4%"
set "logfile=log.txt"
xcopy "%Quelle%" "%Ziel%" /D:%Datum% /Y >> %logfile%

Das Script holt mir so aber alle Dateien vom heutigen Tag aus dem Ordner, genauer: ALLE Dateien von heute und überschreibt vorhandene Dateien auch.
Ich müsste es schon etwas genauer haben und brauche pro Durchlauf nur die neu hinzugekommenen Dateien.
Ein weiteres Script räumt dann den temp Ordner wieder auf, nachdem die Dateien darin verarbeitet worden sind.

Von der Theorie her müsste ich mir nur irgendwie merken, wann der letzte Durchlauf war und ab diesem Zeitpunkt wieder neu suchen.


Ich verzwicke mich da aber gerade total kompliziert, deswegen brauch ich mal Eure Hilfe.

Schöne Grüße!
Mitglied: bastla
10.05.2013 um 12:37 Uhr
Hallo DeeJayBee!

Dafür müsste doch eigentlich, ganz ohne die Timestamps beachten zu müssen, "xcopy /m" genügen ...

Grüße
bastla
Bitte warten ..
Mitglied: Penny.Cilin
10.05.2013, aktualisiert um 13:14 Uhr
Hallo DeeJayBee,

warum nimmst Du dafür nicht Robocopy? Mit den Robocopy Parametern /MON:<änderungen> bzw. /MOT:<minuten> kann man dies sehr gut realisieren.
Die Parameter <änderungen> bzw. <minuten> müssen dann sinngemäß angepasst werden.


Gruss Penny.
Bitte warten ..
Mitglied: Endoro
10.05.2013 um 13:16 Uhr
Hallo DeeJayBee,

es geht einfach so:
01.
>>"%logfile%" xcopy "%Quelle%" "%Ziel%" /D /Y 
Gruss!
Bitte warten ..
Mitglied: bastla
10.05.2013, aktualisiert um 13:28 Uhr
@ Endoro

Ist so aber eine Frage des Timings (da vom Zielordner abhängig, der ja zwischendurch "aufgeräumt" - also vermutlich geleert - wird) ...

Grüße
bastla
Bitte warten ..
Mitglied: Endoro
10.05.2013, aktualisiert um 15:49 Uhr
Nehmen wir doch einfach das Script aus dem Nachbarthread:
01.
@echo off &setlocal 
02.
set "fname=" 
03.
set "ftd=" 
04.
call:GetInternational 
05.
for /f "tokens=1-3*" %%a in ('dir /a-d /tw ^| findstr /b [0-9]') do set "ftd=%%a %%b"&set "fname=%%d"&call:process 
06.
goto:eof 
07.
 
08.
:process 
09.
rem Get file time: 
10.
set "fdate=%ftd:~0,10%" 
11.
set "ftime=%ftd:~11%%sTime%00%sDecimal%00" 
12.
 
13.
call :GetSecs "%fdate%" "%ftime%" fileSecs 
14.
call :GetSecs "%date%" "%time%" curSecs 
15.
set /a elapsed="(curSecs-fileSecs)/60" 
16.
if %elapsed% lss 60 if not exist "C:\Daten\xls_temp\%fname%" copy "%fname%" C:\Daten\xls_temp 
17.
goto :eof 
18.
 
19.
:GetInternational 
20.
:: Sets a bundle of variables by reading the registry settings 
21.
for /f "tokens=1,2*" %%a in ('reg query "HKCU\Control Panel\International"') do set "%%a=%%c" 
22.
goto :eof 
23.
 
24.
:GetSecs "dateIn" "timeIn" secondsOut 
25.
::  Output:  Seconds elapsed since 1th Jan. 1970 00:00:00 
26.
setlocal 
27.
set "dateIn=%~1" 
28.
for /f "tokens=2" %%i in ("%dateIn%") do set "dateIn=%%i" 
29.
for /f "tokens=1-3 delims=%sDate%" %%a in ("%dateIn%") do ( 
30.
  if %iDate%==0 set /a mm=100%%a%%100,dd=100%%b%%100,yy=10000%%c%%10000 
31.
  if %iDate%==1 set /a dd=100%%a%%100,mm=100%%b%%100,yy=10000%%c%%10000 
32.
  if %iDate%==2 set /a yy=10000%%a%%10000,mm=100%%b%%100,dd=100%%c%%100 
33.
34.
for /f "tokens=1-3 delims=%sTime%%sDecimal% " %%a in ("%~2") do ( 
35.
  set "hh=%%a" 
36.
  set "nn=%%b" 
37.
  set "ss=%%c" 
38.
39.
if 1%hh% lss 20 set hh=0%hh% 
40.
if /i "%nn:~2,1%" equ "p" if "%hh%" neq "12" (set "hh=1%hh%" &set /a hh-=88) 
41.
if /i "%nn:~2,1%" equ "a" if "%hh%" equ "12" set "hh=00" 
42.
if /i "%nn:~2,1%" geq "a" set "nn=%nn:~0,2%" 
43.
set /a hh=100%hh%%%100,nn=100%nn%%%100,ss=100%ss%%%100 
44.
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2,j=j/5+dd+y*365+y/4-y/100+y/400-2472633,j=j*86400+hh*3600+nn*60+ss 
45.
endlocal &set "%~3=%j%" 
46.
goto :eof 
47.
 
48.
endlocal
.. und das dann stündlich per Taskplaner starten.

Gruss!
Bitte warten ..
Mitglied: DeeJayBee
10.05.2013 um 15:21 Uhr
Danke für Eure schnellen Antworten.

Endoro: Deine erste Lösung funktioniert nicht, da die Dateien, die vorher drin waren zwischenzeitlich weg sind. In dem Ordner sollen also nur Dateien sein, die es vorher im Quellordner noch nicht gab.

Die Idee mit dem Robocopy schau ich mir gerne mal an.

xcopy mit /m hat vorhin irgendwie nicht 100%ig funktioniert. Es waren plötzlich wieder Dateien da, die ich vorher gelöscht hatte. Aber das prüfe ich noch mal.

Zu der letzten Lösung von Endoro: Das sieht ja ein wenig kompliziert aus, das Ding macht ja weit mehr als das, was ich brauche. Und an die Registry muss ich wegen so etwas schon gar nicht dran.

Der Hintergrund ist ja nur, dass es sich um Dateien handelt, die aus dem Tempordner als PDF gedruckt werden und dann verschickt werden. Da wäre es halt blöd, wenn die Dateien dann jeweils doppelt entstehen. Daher brauche ich nur die geänderten Dateien.
Bisher hatte ich es halt so, dass der Vorgang einmal am Tag stattfindet, damit hätte ich dann kein Problem. Aber nun ist der Wunsch dies mehrmals täglich zu tun.

Ich bastel mal etwas weiter rum und teile Euch mein Ergebnis mit.

Schöne Grüße
Bitte warten ..
Mitglied: Endoro
10.05.2013 um 15:25 Uhr
Hallo, das Script verstellt nichts in der Registry, es werden nur die Einstellungen für Datum- und Zeitformat ausgelesen.

Gruss!
Bitte warten ..
Mitglied: bastla
10.05.2013 um 15:45 Uhr
Hallo DeeJayBee!

Zu "xcopy /m": Es wird hier das "Archiv"-Attribut genutzt - wenn eine Datei gespeichert (= verändert oder neu erstellt) wird, setzt das System automatisch das "Archiv"-Attribut (ansehen kannst du Dir das mit "attrib").

Mit "xcopy /m" werden nur Dateien kopiert, bei denen dieses Attribut gesetzt ist und es wird auch zurückgesetzt - wenn sich daher die Datei seit dem letzten Lauf des Batches nicht verändert hat, dürfte sie auch nicht kopiert werden.

Grüße
bastla
Bitte warten ..
Mitglied: Penny.Cilin
13.05.2013, aktualisiert um 08:13 Uhr
Zitat von DeeJayBee:
Die Idee mit dem Robocopy schau ich mir gerne mal an.

Damit Du Dich nicht mit den Parametern von Robocopy verhedderst, empfehle ich Dir dazu YARCGUI Robocopy GUI. Da bekommst du eine Erläuterung der Parameter.


Gruss Penny.
Bitte warten ..
Mitglied: DeeJayBee
28.05.2013 um 10:08 Uhr
Hallo noch einmal,

ist ein paar Tage her, aber ich wollte Euch mein Ergebnis mitteilen.

Vom Prinzip her hat ein einfaches
xcopy %Quelle" %Ziel% /m
gereicht.

Anscheinend ist in meinen vorhergehenden Tests irgendwas schief gelaufen. Es funktioniert nun einwandfrei.

Danke Euch allen!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch aktuellsten Ordner kopieren
gelöst Frage von MmarKussBatch & Shell2 Kommentare

Hallo @ all Problembeschreibung Ich habe einen Ordner, in welchem alle Daten in ojektbezogenen Unterordnern abgespeichert sind. (D:\Data_all ) ...

Batch & Shell
Ordner durchsuchen und Dateien kopieren
gelöst Frage von friedensbringerBatch & Shell4 Kommentare

Hallo zusammen, gibt es mittels Batchfile eine Möglichkeit in einem definierten Ordner inklusive allen Unterordnern (mehrere Ebenen möglich) nach ...

Batch & Shell
Batch Datei zum Kopieren aktueller Dateien erstellen
gelöst Frage von daniel011Batch & Shell5 Kommentare

Hallo, ich möchte eine Batch Datei erstellen, mit der ich Dateien von einem Ordner in einen anderen kopieren kann. ...

Batch & Shell
Batch zum Kopieren in aktuelles Verzeichnis
gelöst Frage von MasterSchlumpfBatch & Shell5 Kommentare

Hallo zusammen, ist es möglich eine Batch-Datei zu schreiben, welche ein Verzeichnis auf den USB Stick kopiert von dem ...

Neue Wissensbeiträge
Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 2 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 4 TagenSicherheit7 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...