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

Batch kopieren bis Datum Uhrzeit

Frage Entwicklung Batch & Shell

Mitglied: dieEule

dieEule (Level 1) - Jetzt verbinden

15.04.2009, aktualisiert 20:52 Uhr, 3702 Aufrufe, 5 Kommentare

Hallo,
ich bin neu hier im Forum und habe ein kleines Problem!

Ich versuche gerade eine Batchdatei zu schreiben, die bei der Erkennung eines Netzwerkes automatisch ein Netzlaufwerk verbindet und dann aus einem Verzeichniss alle Unterverzeichnisse sammt Inhalt kopiert.
Das funktioniert im Prinzip jetzt schon, das eigentliche Problem besteht darin, dass eine Datei aus dem Verzeichniss immer im Schreibprozess ist (ein Datenlogger, der kontinuierlich Daten schreibt und dessen zugehörige Software diese Stundenweise zu Dateien in Unterordner auf dem angeschlossenen PC speichert). Ich würde jetzt also gerne den neuesten Ordner vom Kopiervorgang ausschließen, habe aber keine Ahnung, wie ich das Erstellungsdatum des Ordners heraus bekomme!!! (Wenn der Ordner mit kopiert wird, beendet mir der Kopiervorgang den Schreibprozess der Datenloggersoftware)

Kann mir da evtl. jemand einen Tipp geben? (Geht das überhaupt?)
Als Anhang mal mein Batchfile... (der 1. Ping dient mir nur als delay-Funktion, die IP ist nicht vergeben)

Gruß Christian

01.
@echo off 
02.
set /a m=0 & set /a i=0 
03.
rem pause 
04.
echo %m% 
05.
rem pause 
06.
echo %i% 
07.
rem pause 
08.
 
09.
 
10.
:anruf 
11.
 
12.
IF %i% LSS 3 (  
13.
set /a i=%i%+1 
14.
echo anruf 
15.
ping -n 1 -w 1000 10.0.8.55 
16.
ping -n 1 -w 1000 10.0.8.5 
17.
IF %errorlevel%==1 (set /a m=%m%+1 
18.
)  
19.
echo i=%i% 
20.
echo m=%m% 
21.
goto anruf 
22.
23.
 
24.
IF %m%==0 goto netzlaufwerk 
25.
 
26.
set /a i=0 
27.
set /a m=0 
28.
goto anruf 
29.
 
30.
:netzlaufwerk 
31.
echo bei netzlaufwerk angekommen 
32.
echo verbinden 
33.
 
34.
net use "\\10.0.8.20\(f) usb disk" /delete 
35.
 
36.
net use "\\10.0.8.20\(f) usb disk" Passwort /user:xxxxxx 
37.
 
38.
if %errorlevel%==1 goto anruf 
39.
 
40.
xcopy "\\10.0.8.20\(f) usb disk\test" D:\test /c /i /y /f /d /s 
41.
if %errorlevel%==0 goto ende 
42.
goto anruf 
43.
 
44.
 
45.
rem echo %errorlevel% 
46.
 
47.
:ende 
48.
net use "\\10.0.8.20\(f) usb disk" /delete 
49.
pause
Mitglied: bastla
15.04.2009 um 14:45 Uhr
Hallo die Eule und willkommen im Forum!

Ungetestet würde ich es mit folgenden Zeilen als Ersatz der bisherigen "xcopy"-Zeile versuchen:
01.
for /f "delims=" %%i in ('dir /b /ad /od "\\10.0.8.20\(f) usb disk\test\*.*"') do set "DasNicht=%%i" 
02.
echo "%DasNicht%">%temp%\DasNicht.txt 
03.
 
04.
xcopy "\\10.0.8.20\(f) usb disk\test" D:\test /c /i /y /f /d /s /Exclude:%temp%\DasNicht.txt
Grüße
bastla
Bitte warten ..
Mitglied: dieEule
15.04.2009 um 15:10 Uhr
Hallo bastla,

danke für die schnelle Antwort!
Ich verstehe die erste Zeile nicht (ich habe gerade erst angefangen mich mit batch (bzw. Programmierung allgemein) zu beschäftigen und spreche/verstehe es deshalb noch nicht so wirklich) kannst du sie mir evtl. erläutern?

Und ich glaube dass es besser wäre, wenn man nur bis zu einem bestimmten Datum/Uhrzeit kopiert, da die Zeit nach der der Datenlogger eine neuen Ordner auf macht während des kopiervorgangs abläuft, und dann würde ja die neu aufgemachte Datei trotzdem kopiert?
Eine funktion kopiere alles ab Datum gibt es ja, gibt es auch kopiere alles bis Datum? (Und dann für Datum Systemdatum minus 2h, oder so)
Oder ist es möglich sich immer die älteste Datei/den ältesten Ordner zu nehmen, zu kopieren und dann zu löschen und den letzten (jüngsten) nicht zu bearbeiten?

Danke schon mal!

Gruß
Christian
Bitte warten ..
Mitglied: bastla
15.04.2009 um 16:49 Uhr
Hallo dieEule!
immer die älteste Datei/den ältesten Ordner zu nehmen, zu kopieren und dann zu löschen und den letzten (jüngsten) nicht zu bearbeiten?
.. wäre wohl die beste Vorgangsweise, wenn es sich zeitlich nicht anders ausgeht. Auch für diese Variante ist dann übrigens die obige erste Zeile erforderlich - damit wird nämlich der Name des jüngsten Verzeichnisses ermittelt, indem ein (nach Änderungsdatum) sortiertes Inhaltsverzeichnis erstellt und das letzte Verzeichnis dieser Liste in die Variable %DasNicht% übernommen wird.

Der angepasste (allerdings ungetestete) Batch könnte dann so aussehen:
01.
@echo off & setlocal 
02.
set /a m=0 & set /a i=0 
03.
echo %m% 
04.
echo %i% 
05.
rem pause 
06.
 
07.
:anruf 
08.
if %i% LSS 3 ( 
09.
    set /a i+=1 
10.
    echo anruf 
11.
    ping -n 1 -w 1000 10.0.8.55 
12.
    ping -n 1 -w 1000 10.0.8.5 
13.
    if errorlevel 1 set /a m+=1 
14.
15.
echo i=%i% 
16.
echo m=%m% 
17.
goto anruf 
18.
 
19.
if %m%==0 goto netzlaufwerk 
20.
 
21.
set /a i=0 
22.
set /a m=0 
23.
goto anruf 
24.
 
25.
:netzlaufwerk 
26.
echo bei netzlaufwerk angekommen 
27.
echo verbinden 
28.
 
29.
net use "\\10.0.8.20\(f) usb disk" /delete 
30.
net use "\\10.0.8.20\(f) usb disk" Passwort /user:xxxxxx 
31.
if errorlevel 1 goto anruf 
32.
 
33.
set Error= 
34.
for /d %%v in ("\\10.0.8.20\(f) usb disk\test\*.*") do call :ProcessDir "%%v" 
35.
if defined Error goto anruf 
36.
 
37.
net use "\\10.0.8.20\(f) usb disk" /delete 
38.
pause 
39.
goto :eof 
40.
 
41.
:ProcessDir 
42.
for /f "delims=" %%i in ('dir /b /ad /od "\\10.0.8.20\(f) usb disk\test\*.*"') do set "DasNicht=%%i" 
43.
if /i "%~nx1"=="%DasNicht% goto :eof 
44.
 
45.
xcopy %1 "D:\test\%~nx1\" /c /i /y /f /d /s  
46.
if errorlevel 1 set Error=True 
47.
goto :eof
Die Änderung der Abfragen
if %errorlevel%==1
auf
if errorlevel 1
hat mehrere Gründe: Zum Einen werden damit alle Errorlevel >= 1 berücksichtigt, zum Anderen liefert %errorlevel% (wie alle anderen "Nicht-Schleifen-Variablen") innerhalb einer Schleife nur den einmalig am Beginn dieser Schleife zugewiesenen Wert.

Aus diesem Grund erfolgt auch die Überprüfung auf den neuesten Ordner in einem Unterprogramm - dort stehen alle Variablen aktuell zur Verfügung.

Grüße
bastla

P.S.: Ist es Absicht, dass in den Zeilen 11 und 12 unterschiedliche Adressen "gepingt" werden?

P.P.S: Bitte verwende zum Posten von Batches die passende Formatierung ...
Bitte warten ..
Mitglied: dieEule
16.04.2009 um 19:30 Uhr
Hallo, herzlichen Dank erst mal!

Ich kann gerade nur zwischen Tür und Angel an den Rechner, werde es aber hoffentlich am WE schaffen das auszuprobieren!
Die erste Adresse dient nur einer Verzögerung um 1 sek. Die IP ist garnicht vergeben. (Ich habe nichts gefunden um eine Delay-Funktion zu realisieren)

Das mit der Formatierung werde ich beherzigen!

Danke erst mal

Christian
Bitte warten ..
Mitglied: Biber
16.04.2009 um 23:11 Uhr
Moin dieEule,

Die erste Adresse dient nur einer Verzögerung um 1 sek.
Dann wäre mein Vorschlag:
Streiche: ping -n 1 -w 1000 10.0.8.55
Setze: ping -n 1 -w 1000 localhost >nul
....also den eigenen Rechner anpingen aus o.g. Gründen. Und die Ausgabe ungelesen entsorgen.

Und bei den heutigen Rechnerleistungen würde es nur eine verschmerzbare Verlangsamung des Batches bewirken,
wenn Du so alle paar Zentimeter eine Kommentarzeile einfügst.
So relativ übersichtlich wie der Schnipsel auch jetzt wirken mag - wenn Du ihn in einem Jahr mal wieder wegen irgendeiner Anpassung anfassen musst, dann wirst Du es zu schätzen wissen.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
HTML
Datum und Uhrzeit als Vollbildanzeige
Frage von Fighter-01HTML7 Kommentare

Hallo an die Experten. Ich versuche eine Webseite zu erstellen, auf der das Datum und die Uhrzeit in Vollbild ...

Batch & Shell
Windows 10 Batch für Datum und Uhrzeit setzen
gelöst Frage von zeroblue2005Batch & Shell18 Kommentare

Hallo Zusammen, habe hier ein Laptop von Medion,, wo die Bios fest verlötet ist. Fragt mich bitte nicht was ...

Batch & Shell
In Html-Datei per Batchdatei das Datum und die Uhrzeit eintragen
gelöst Frage von HakiegoldBatch & Shell2 Kommentare

Ich habe ein kleines Problem. Ich importiere aus dem Internet per Batch alle 2 Minuten eine html-Datei mit Kursdaten. ...

Batch & Shell
(Batch) Datum Sortier-Mechanismus
gelöst Frage von clragonBatch & Shell19 Kommentare

Hallo zusammen. Ich bin schon etwas länger am Batch schreiben, und war schon oft uneingeloggt hier, und jetzt hab ...

Neue Wissensbeiträge
Internet

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

Information von Penny.Cilin vor 2 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 3 TagenWebbrowser7 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 3 TagenSicherheit6 Kommentare

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

Digitiales Fernsehen

Apple TV: Amazon Prime App ist verfügbar

Information von Frank vor 4 TagenDigitiales Fernsehen4 Kommentare

Die Amazon Prime Video App kann ab sofort auf einem Apple TV ab der 3 Generation installiert werden. Einfach ...

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 ...