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 Xcopy mit Parameter D - Kopieren von Dateien, die neuer sind als ein spezieller Zeitsstempel

Mitglied: ulirlk

ulirlk (Level 1) - Jetzt verbinden

17.03.2008, aktualisiert 19.03.2008, 15548 Aufrufe, 7 Kommentare

Hallo,
ich habe folgendes Problem: In einem speziellen Ordner eines Subsystems werden in unterschiedlichen Zeitabständen Word-Dokumente zum Export in ein anderes System bereitgestellt.

Ich möchte nun den Kopierprozeß in dieses andere System automatisieren über eine Batch-Datei. Mein Script sieht momentan so aus:

Zunächst setze ich einige Variablen:

@ECHO OFF
CLS
SET _FILE_COPY_LOG=V:\Ordner1\Logdatei\Logdatei.log
SET _QUELL_LAUFWERK=W:
SET _QUELL_DATEI_ENDUNG=doc
SET _QUELL_ORDNER_DATEIEN=W:\Subsystem_export
SET _ZIEL_ORDNER_DATEIEN=V:\Import

Zur Protokollierung soll Datum und Uhrzeit mitgeschrieben werden:
echo >> %_FILE_COPY_LOG%
echo -----------------------------Neuer Durchlauf------------------------------- >> %_FILE_COPY_LOG%
echo >> %_FILE_COPY_LOG%
date /t >> %_FILE_COPY_LOG%
time /t >> %_FILE_COPY_LOG%

Jetzt beginnen meine "Probleme". Aus dem Inhalt von 4 verschiedenen Textdateien (jeweils nur eine Zeile) sollen 4 Variablen mit Leben gefüllt werden. Diese 4 Textdateien sind beim allerersten Durchlauf der Batch von mir "per Hand" erzeugt worden und sollen später durch das Programm automatisch neu verändert werden.

@for /f "delims=" %%i in (V:\Ordner1\Logdatei\Tag.txt) do echo set /p Tag = %%i
@for /f "delims=" %%j in (V:\Ordner1\Logdatei\Monat.txt) do echo set /p Monat = %%j
@for /f "delims=" %%k in (V:\Ordner1\Logdatei\Jahr.txt) do echo set /p Jahr = %%k
@for /f "delims=" %%l in (V:\Ordner1\Logdatei\Uhrzeit.txt) do echo set /p Uhrzeit = %%l

Nun möchte ich NUR die Dateien kopieren, die NACH dem "Zeitstempel" erzeugt wurden. Der Zeitstempel setzt sich aus Tag, Monat, Jahr und Uhrzeit wie o.a. zusammen. Gleichzeitig soll das Ereignis protokolliert werden.

xcopy %_QUELL_ORDNER_DATEIEN% %_ZIEL_ORDNER_DATEIEN% /D:%Monat%-%Tag%-%Jahr% >> %_FILE_COPY_LOG%

Und hier kommt es zur Fehlermeldung: Unzulässiger Parameter: D/--
Verstehe ich nicht, da ich die Variablen doch gesetzt habe ??!!

Noch nicht berücksichtigt habe ich die Uhrzeit (weiß nicht, wie ich die einbauen kann). Aber es müßte doch wenigstens mit den Angaben Tag, Monat und Jahr funktionieren!!!!

Ich habe beim Stöbern noch eine andere "Art" des Füllens von Variablen durch Auslesen von Textdateien gefunden und ausprobiert. Leider mit dem gleichen negativen Ergebnis:

@set /P Tag=<V:\Ordner1\Logdatei\Tag.txt
@set /P Monat=<V:\Ordner1\Logdatei\Monat.txt
@set /P Jahr=<V:\Ordner1\Logdatei\Jahr.txt
@set /P Uhrzeit=<V:\Ordner1\Logdatei\Uhrzeit.txt

Auch hier erhalte ich als Fehlermeldung: Unzulässiger Parameter D/

Im weiteren Verlauf soll die Batchdatei einen neuen Zeitstempel erzeugen und ihn dann abspeichern:

@for /f "tokens=1 delims=." %%a in ("%date%") Do @set var1=%%a
@for /f "tokens=2 delims=." %%b in ("%date%") Do @set var2=%%b
@for /f "tokens=3 delims=." %%c in ("%date%") Do @set var3=%%c


echo %var1% > V:\Ordner1\Logdatei\Tag.txt
echo %var2% > V:\Ordner1\Logdatei\Monat.txt
echo %var3% > V:\Ordner1\Logdatei\Jahr.txt
echo %time% > V:\Ordner1\Logdatei\Uhrzeit.txt

Ist (wahrscheinlich) ein bißchen umständlich, aber dieser Teil der Batch funktioniert:

Ich hoffe, ich habe das Problem so geschildert, dass man es nachvollziehen kann ???

Grüße,
Uli
Mitglied: bastla
17.03.2008 um 15:17 Uhr
Hallo ulirlk und willkommen im Forum!

Versuch es mit folgender Zeile (als Vorlage für die weiteren):
01.
for /f "delims=" %%i in (V:\Ordner1\Logdatei\Tag.txt) do set Tag=%%i
Der Hilfe zu "xcopy" ist zu entnehmen, dass für "/D" nur ein Datum, aber keine Uhrzeit angegeben werden kann.
Noch eine Alternative zum Zwischenspeichern des kompletten Timestamps (bzw eigentlich "Date"stamps ):
01.
echo %date:~-7,2%-%date:~-10,2%-%date:~-4%>V:\Ordner1\Logdatei\Timestamp.txt
Die Begründung, warum %date% von "hinten" (-7) her zerlegt wird, ist die zwischen W2000 und XP unterschiedliche Ausgabe (mit/ohne Wochentag) - so funktioniert es mit beiden Systemen (BTW: Das von Dir verwendete BS lässt sich zwar erraten, Du solltest es aber trotzdem besser auch anführen).

Grüße
bastla
Bitte warten ..
Mitglied: ulirlk
17.03.2008 um 16:20 Uhr
Hallo bastla,
danke für deinen Tip. Zunächst einmal BS ist Windows 2003.

Ich habe jetzt die Erstellung des Zeitsstempels so wie du es beschrieben hast unten in meiner Batch geändert:

echo %date:~-7,2%-%date:~-10,2%-%date:~-4%>V:\Ordner1\Logdatei\Timestamp.txt

Es wird auch beim Durchlauf die Datei mit dem heutigen Datum erzeugt. Jetzt habe ich im oberen Bereich das Auslesen aus den 4 Dateien Tag, Monat, Jahr und Uhrzeit abgeändert, so dass nur die Datei Timestamp.txt abgefragt wird:

also:
@for /f "delims=" %%i in (V:\Ordner1\Logdatei\Tag.txt) do echo set /p Tag = %%i
@for /f "delims=" %%j in (V:\Ordner1\Logdatei\Monat.txt) do echo set /p Monat = %%j
@for /f "delims=" %%k in (V:\Ordner1\Logdatei\Jahr.txt) do echo set /p Jahr = %%k
@for /f "delims=" %%l in (V:\Ordner1\Logdatei\Uhrzeit.txt) do echo set /p Uhrzeit = %%l

komplett ersetzt durch:
for /f "delims=" %%i in (V:\Ordner1\Logdatei\Timestamp.txt) do set Timestamp = %%i

Die nächste Zeile:
xcopy %_QUELL_ORDNER_DATEIEN% %_ZIEL_ORDNER_DATEIEN% /D:%Monat%-%Tag%-%Jahr% >> %_FILE_COPY_LOG%

habe ich dann abgeändert in:
xcopy %_QUELL_ORDNER_DATEIEN% %_ZIEL_ORDNER_DATEIEN% /D:%Timestamp% >> %_FILE_COPY_LOG%

und erhalte leider die Fehlermeldung: Unzulässige Option

Verstehe ich nicht, da der Inhalt von Timestamp doch 03-17-2008 ist und somit der Xcopy-Befehl mit Parameter D richtig gesetzt ist?????
Bitte warten ..
Mitglied: bastla
17.03.2008 um 17:09 Uhr
Hallo ulirlk!

In Batchdateien solltest Du möglichst wenige Leerzeichen verwenden, daher:
01.
for /f "delims=" %%i in (V:\Ordner1\Logdatei\Timestamp.txt) do set Timestamp=%%i
Grüße
bastla

P.S.: Falls Dir (hoffentlich) die Formatierung der obigen Befehlszeile gefällt: Das kannst Du in Deinen Kommentaren auch haben - einfach zwischen <code>-Tags setzen ...
Bitte warten ..
Mitglied: ulirlk
18.03.2008 um 08:41 Uhr
Hallo bastla,
vielen Dank für den Hinweis mit den Leerzeichen. Hat funktioniert. Hatte das wegen der Übersichtlichkeit gemacht und prompt "das Eigentor" geschossen. Werde das also zukünftig vermeiden.

Damit ist mein Problem aber (leider) nur zur Hälfte gelöst. Ich kann jetzt zwar alle Dateien ab dem Datum des Zeit-/Tagesstempels kopieren, aber eben nicht NUR DIE ab einer gewissen Uhrzeit.

Gibt es da vielleicht einen anderen Weg??

Warum ich nur diese Dateien brauche:
Die kopierten Dokumente aus dem Subsystem sollen in dem anderen System weiterverarbeitet werden, d.h. sobald die Dokumente kopiert sind, sollen diese Dokumente nach Bearbeitung aus dem Zielordner wieder entfernt werden. Läuft aber meine Batch dann erneut an, kopiert sie mir wieder ALLE Dokumente des Tages in den Zielordner.....murks......

Kann ich die Namen der schon kopierten Dokumente eventuell in eine Datei (vielleicht ini) schreiben, so dass die Batch beim Kopiervorgang in die Datei "reinschaut" und nur die Dokumente kopiert, die NOCH NICHT vorher schon einmal kopiert wurden?

Grüße,
Uli
Bitte warten ..
Mitglied: bastla
18.03.2008 um 09:47 Uhr
Hallo ulirlk!

Um Dateien nur ein einziges Mal zu kopieren, bietet "xcopy" mit dem Schalter "/m" eine bessere Möglichkeit.

Hintergrund: Wenn eine Datei verändert wird (inkludiert auch das erstmalige Speichern), wird als Kennzeichen für "noch zu archivieren" das "Archiv-Attribut" (oder "Archiv-Bit") gesetzt - kannst Du Dir im Explorer unter "Dateieigenschaften / Erweitert" oder mit dem CMD-Befehl "attrib" anzeigen lassen bzw selbst verändern. Bei einer Datensicherung wird dieses Attribut üblicherweise gelöscht, damit eine Inkrementsicherung (= nur veränderte Dateien) möglich wird.

Der genannte Schalter "/m" sorgt nun dafür, dass nur Dateien mit gesetztem Archiv-Bit kopiert werden und (im Gegensatz zu "/a") entfernt danach diese Kennzeichnung.

Falls also nicht eine zwischenzeitliche Datensicherung des Quellordners durchgeführt wird, sollte es mit "xcopy /m" eigentlich klappen.

Grüße
bastla
Bitte warten ..
Mitglied: ulirlk
18.03.2008 um 10:00 Uhr
Hallo bastla,
vielen Dank für den Tip. Kann ihn (leider) erst morgen ausprobieren, werde dann aber berichten.

Grüße, Uli
Bitte warten ..
Mitglied: ulirlk
19.03.2008 um 12:36 Uhr
Hallo bastla,
toller Tip. Hat funktioniert. Echt klasse. Vielen Dank.

Grüße, Uli
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Xcopy Batch-Datei
gelöst Frage von LauchheimerBatch & Shell3 Kommentare

Tag Leute, Ich habe in einer Batchdatei einen xcopy-Befehl. Dieser soll eine bestimmte Datei kopieren. Diesen führe ich mit ...

Batch & Shell
Xcopy-script kopiert nur 1 datei?
gelöst Frage von f0rml0sBatch & Shell2 Kommentare

hey ich versuche gerade mit einem script dateien von einem unc pfad zum anderen zu kopierenleider kopiert das script ...

Batch & Shell

Nach xcopy feststellen, ob Datei kopiert wurde oder nicht

gelöst Frage von Scar61Batch & Shell9 Kommentare

Hallo zusammen, in einem Skript wird eine Datei nur dann kopiert, wenn sie in der Quelle neuer ist als ...

Batch & Shell

Batch Xcopy Probleme

gelöst Frage von GtaGamerBatch & Shell3 Kommentare

Hallo Administrator Community, Zurzeit versuche ich ein Tool für GTA 5 zu entwickeln, wo beim Start mit einer Batch ...

Neue Wissensbeiträge
Humor (lol)
Administrator.de Perlen
Tipp von DerWindowsFreak2 vor 2 TagenHumor (lol)3 Kommentare

Hallo, Heute beim stöbern auf dieser Seite bin auf folgenden Thread aus dem Jahre 2006 gestossen: Was meint ihr? ...

Erkennung und -Abwehr
OpenSSH-Backdoor Malware erkennen
Tipp von Frank vor 3 TagenErkennung und -Abwehr

Sicherheitsforscher von Eset haben 21 Malware-Familien untersucht. Die Malware soll Hintertüren via OpenSSH bereitstellen, so dass Angreifer Fernzugriff auf ...

iOS
WatchChat für Whatsapp
Tipp von Criemo vor 6 TageniOS5 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor!
Tipp von Criemo vor 6 TageniOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
PCIe 1.0 Grafikkarte für 3840x2160
Frage von Windows10GegnerGrafikkarten & Monitore29 Kommentare

Hallo, mein Vater hat einen neuen Monitor gekauft, welcher eine native Auflösung von 3840*2160 hat. Diese muss jetzt auch ...

Windows Server
Dienstnamen und oder Deutsche und Englische Beschreibung in services.msc gleichzeitig anzeigen
gelöst Frage von vafk18Windows Server22 Kommentare

Guten Morgen, die Suche nach Diensten in services.msc gestaltet sich immer wieder schwierig, weil mir je nach Aufgabe die ...

Windows 10
Windows Enterprise 1809 Eval nicht bootbar
Frage von Sunny89Windows 1022 Kommentare

Hallo zusammen, bevor ich mich jetzt noch stundenlang rumärger wollte ich euch fragen, ob Ihr die gleichen Probleme habt ...

Linux
Info Monitor für eine Schule
gelöst Frage von CAT404Linux13 Kommentare

Moin, ich möchte einen Infomonitor betreiben; derzeit läuft da ein Windows 10 Rechner bei dem Firefox beim Start in ...