fireskyer
Goto Top

Xcopy per Batch prüfen ob Datei in Benutzung

server windows 2008 64 bit

Morgen leute,

Ich habe ein Problem. Ich will per xcopy eine Telefonliste auf einen anderen Server hieven per Batch Script. Das klappt auch ganz gut, bloß weiß ich nicht, wie ich prüfen kann ob die zu verschiebende Datei in Benutzung ist.

Mein Script sieht zzt. so aus:


##batch copy script#####
XCOPY \\server\ordner\Telefonliste\Telefonliste.xls \\server\\ordner /S /E /C /H /O /R /Y /D /V
if %errorlevel%==0 goto KOPIEREN ERFOLGREICH
if not %errorlevel%==0 goto KOPIEREN FEHLER
pause


:KOPIEREN FEHLER


:KOPIEREN ERFOLGREICH


Das ist der aktuelle Stand... aber was muss ich setzen als Errorlevel, wenn ich prüfen will ob die Datei in Benutzung ist oder nicht. Falls ja, dann Script in 10 min nochmal ausführen. Falls nein Script gleich ausführen


Danke für die Hilfe

grüße fireskyer

Content-Key: 169949

Url: https://administrator.de/contentid/169949

Printed on: April 25, 2024 at 17:04 o'clock

Member: Friemler
Friemler Jul 18, 2011 at 15:22:15 (UTC)
Goto Top
Hallo fireskyer,

schau Dir mal die Programme Handle.exe und PSExec.exe von SysInternals/Microsoft an. Mit Handle kannst Du feststellen, ob eine Datei geöffnet ist. PSExec dient zur Remoteausführung eines Programms (hier: Handle.exe) auf einem anderen Rechner.

BTW: Warum legst Du nicht einen geplanten Task an und lässt nachts kopieren?

Gruß
Friemler
Mitglied: 60730
60730 Jul 18, 2011 at 20:40:08 (UTC)
Goto Top
moin,

@ Friemler - in dem Fall muß man nicht extra 3rd Party oder Mark benutzen.

Eine geöffnete xls erkennt man - wenn eine versteckte Steuerdatei existiert. (Anhand dieser bekommt der 2. die Meldung Datei bereits von User xyz geöffnet bla bla)
  • Die kann - im Fall, dass der Zugriff abgebrochen wurde, auch mal "noch" vorhanden sein, obwohl die keiner mehr auf hat, dann kann man die in die Tonne treten - wenn die wirklich nicht offen ist, nicht.

if exist \\server\ordner\Telefonliste\~Telefon*.xls del \\server\ordner\Telefonliste\~Telefon*.xls
if not exist \\server\ordner\Telefonliste\~Telefon*.xls XCOPY \\server\ordner\Telefonliste\Telefonliste.xls \\server\\ordner /S /E /C /H /O /R /Y /D /V

Gruß

edit
\\server\ordner\ ist natürlich falsch, \\server\freigabe\ richtiger - obwohl manche ja Freigabe und Ordner identisch halten.
Member: Friemler
Friemler Jul 18, 2011 at 22:22:08 (UTC)
Goto Top
Moin TiMo,

ich habe das gerade mal überprüft - bei meinem Excel 2003 wird keine "Tildendatei" angelegt, nur Word 2003 macht das so. Wenn ich eine XLS in Excel öffne und ändere aber nicht speichere, kann ich sowohl über den Explorer als auch per Konsolen-COPY die Originaldatei in ein anderes Verzeichnis kopieren. Ist das jetzt irgendeine Einstellungssache oder verhalten sich Word und Excel einfach anders?

Gruß
Friemler
Mitglied: 60730
60730 Jul 19, 2011 at 18:37:16 (UTC)
Goto Top
Servus Friemler,

jetzt hast du mich aber erwischt....

Ich hätte Stein und Bein verwettet, das sich Äxsel da genauso wie der Rest der Office Suite verhält, aber dein Einwand stimmt ....
Ist das mal durch ein SP weg gekommen?

Anyway....



Gruß
Member: Friemler
Friemler Jul 19, 2011 at 18:47:57 (UTC)
Goto Top
Moin TiMo,

hmm, damit OPENFILES so wie von Dir gewünscht funktioniert, muss zuerst folgender Aufruf gemacht und dann ein Neustart durchgeführt werden:
openfiles /local on
Die Hilfe dieses Befehls warnt ausdrücklich davor das zu machen, da die Systemleistung dadurch sinken würde

Außerdem müsste OPENFILES ja auch remote auf dem Server, auf dem die Quelldatei abgelegt ist, ausgeführt werden. Dann bräuchte man zumindest PSEXEC. Aber da wir ja den armen Server nicht verlangsamen wollen, greifen wir hier ausnahmsweise doch mal auf beide Tools von Mark zurück face-wink .

Gruß
Friemler


[EDIT]
OPENFILES würde wie von Dir gewünscht funktionieren, wenn auf die Telefonliste nur über das Netzwerk zugegriffen wird, was ja wahrscheinlich der Fall ist. Also nix mit lahmem Server face-wink .
[/EDIT]

[EDIT2]
Um aber auch mal konkret zu werden:
psexec \\Server -h -u User -p Passwort -c handle.exe Telefonliste.xls > NUL 2>&1 || XCOPY /SECHORYDV "\\Server\Freigabe\Telefonliste\Telefonliste.xls" "\\Server\Freigabe"
Das verwendete Benutzerkonto muss ein Adminkonto sein.
[/EDIT2]
Hotly discussed
gleixnerdCheck of ZFW Firewallgleixnerd - 5 Comments