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-ID: 169949

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

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

Friemler
Friemler 18.07.2011 um 17:22:15 Uhr
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
60730
60730 18.07.2011 um 22:40:08 Uhr
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.
Friemler
Friemler 19.07.2011 um 00:22:08 Uhr
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
60730
60730 19.07.2011 um 20:37:16 Uhr
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ß
Friemler
Friemler 19.07.2011 um 20:47:57 Uhr
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]
Mehr von fireskyerfireskyerNCP Client Settings auf Shrewsoft VPN Client übertragenfireskyer - 1 KommentarfireskyerSPP von HP Abwärtskompatibel?fireskyer - 18 KommentarefireskyerBrauche Hilfe mit einem Batch Script( or condition)fireskyer - 21 KommentarefireskyerVorgehen bei Aussortieren von Doppelten Ordner und Dateien so Sinnvoll?fireskyer - 3 Kommentare
Heiß diskutiert
superfun2k24Sophos SFOS 20 DNAT funktioniert nichtsuperfun2k24 - 26 Kommentareuser217Kaufberatung Hardware - Hyper-V Cluster 3 Nodesuser217 - 25 KommentarePharaunIntel-E810 QSFP28 to Mikrotik QSPF+ mit 40Gbit VerbindungPharaun - 24 Kommentareprplemk2Testumgebung bauen (Grundlegend)prplemk2 - 19 KommentareaufdemmarsHP Z620 USB hat kein Strom beim Startenaufdemmars - 17 KommentareTJ.Hooker74Dom.Admin-Passwort ändern - Auswirkungen auf EX, HCW, AADCTJ.Hooker74 - 15 KommentaremaisenkaiserSwitch ohne STP ins Netzwerkmaisenkaiser - 13 KommentareUnluckyProccess1999Creo 4.0 Lizenz Server (LMTOOLS)UnluckyProccess1999 - 13 KommentareJudgelgZertifikate in die Exchange Online GAL hochladenJudgelg - 13 KommentareadmtechEntwicklertagebuch: Release 6.4 - Filteradmtech - 13 KommentareleberkaeseFB7590 ISDN Fax-Funktionleberkaese - 12 KommentareHemingwayWord Makro soll aktuelle Datei regelmäßig kopieren und speichernHemingway - 11 Kommentare