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

Frage Entwicklung Batch & Shell

Mitglied: ulirlk

ulirlk (Level 1) - Jetzt verbinden

17.03.2008, aktualisiert 19.03.2008, 14896 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
Namensänderung beim kopieren (xcopy)
gelöst Frage von Groja2Batch & Shell12 Kommentare

Hallo zusammen, ich hatte bereits einen Beitrag geschrieben ) wie ich eine Datei ersetzen kann. Bin dann abschließed dazu ...

Batch & Shell
Robocopy soll nur spezielle Unterordner kopieren
Frage von PoldiMUCBatch & Shell2 Kommentare

Guten Abend, ich möchte mit Robocopy nur spezielle Ordner einer Ordnerstruktur incl. der übergeordneten Ordnerstruktur kopieren (siehe Bild 1 ...

Batch & Shell
Dateien aus einer Liste anhand verschiedener Parameter kopieren
gelöst Frage von gnumpf21Batch & Shell6 Kommentare

Hallo zusammen, ich habe folgende Herausforderung, und finde da leider keine Lösung Es gibt eine .txt-Datei (projekt.txt) mit eindeutigen ...

Batch & Shell
Via Batch speziellen Unterordner kopieren
Frage von WeezytBatch & Shell3 Kommentare

Moin Leute, brauche wieder mal euren Rat. Ich will mit einem Skript einen speziellen Unterordner aus einem Hauptverzeichnis kopieren. ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 104 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
Frage von HelloWorldBatch & Shell13 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...