11193
Goto Top

Batch zur einfachen Sicherung

Hallo zusammen,

ich habe mir eine kleine Batchdatei gebastelt die jeden morgen beim Start
des Rechners eine Datei vom Server auf die lokale Festplatte kopieren soll.
Das sieht so aus:
@echo off
echo Sicherung von Laufwerk K
xcopy K:\Ordner\Backup\backup.mdb c:\backup 
pause
Er gibt dann aber immer nur den Fehler "Unzulässige Parameteranzahl" aus.
Wenn ich statt xcopy nur copy nehme findet er die Datei nicht. Was mach ich
da falsch????

Content-Key: 10988

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

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

Member: Enne
Enne May 23, 2005 at 05:29:15 (UTC)
Goto Top
Mouin quarx,

Erstmal ne Frgae : Wo bzw. Wann wird diese Datei ausgeführt ? Hast die einfach in Autostart gepackt ?

Als Ziel solltest du evtl. c:\backup.mdb benutzen.

Gruß Enne
Mitglied: 11193
11193 May 23, 2005 at 05:33:19 (UTC)
Goto Top
Hallo,

habe den Fehler schon gefunden. Ich hatte ein Leerzeichen bei meiner Pfadangabe. Daran
lags. Trotzdem danke für den Tip. Ich will die Datei in den Autostart legen. Ist das schlimm?

Wie mache ich das denn wenn ich die Batch-Datei auf dem Server liegen habe. Kann ich die dann trotzdem über den Autostart aufrufen? Oder muss ich eine zweite Batch-Datei basteln die dann die Batchdatei auf dem Server aufruft???
Member: Enne
Enne May 23, 2005 at 05:46:21 (UTC)
Goto Top
Autostart ist ok.
Die Batch-Datei kannst ruhig auf den Server legen, dann können andere Benutzer diese auch nutzen.
Mitglied: 11193
11193 May 23, 2005 at 06:00:30 (UTC)
Goto Top
Was mache ich denn wenn ich einen Ordner habe der im Namen Leerzeichen enthält?
Das ist ja nicht zulässig.

Bsp:

xcopy X:\Ordner Nummer\test.mdb C:\Backup
Member: Enne
Enne May 23, 2005 at 06:08:53 (UTC)
Goto Top
Dann schreibst : xcopy "X:\Ordner Nummer\test.mdb" C:\Backup
Mitglied: 11193
11193 May 23, 2005 at 06:18:58 (UTC)
Goto Top
Gilt das auch für die start-Anweisung?

start K:\Access Datenbank\Backup\backup.bat

So klappts ja nicht

start "K:\Access Datenbank\Backup\backup.bat"

So aber auch nicht...
Member: Enne
Enne May 23, 2005 at 06:32:38 (UTC)
Goto Top
start-anweisung ??? ich weiß nicht genau was du meinst *grübel*

Wo schreibst du : start K:\Access Datenbank\Backup\backup.bat ?
Mitglied: 11193
11193 May 23, 2005 at 06:47:21 (UTC)
Goto Top
Man kann doch in der Batch Datei mittels dem Befehl start eine andere
Datei aufrufen. Das meinte ich. Was ist nun wenn die Pfadangabe dort
auch Leerzeichen enthält.

Noch eine andere Frage. Ich starte meien Batchdatei immer beim Start
des Rechners. Leider sind dann noch nicht alle Laufwerkverbindungen zum
Server hergestellt. Somit meldet er mir ungültige Pfadangabe. Wenn ich
die Batch Datei im laufenden Rechnerbetrieb starte geht es. Kann ich nun
eine kleine Zeitverzögerung einbauen die wartet bis alle Serververbindungen
da sind?
Member: Enne
Enne May 23, 2005 at 06:57:06 (UTC)
Goto Top
Wieso machst du das ? Leg doch einfach ne Verknüpfung zu der Server-Batch-Datei in den Autostart deines Rechners.


Unter deinem Post steht ne Rubrik "Mögliche Antworten oder verwandte Beiträge". Der 5te Eintrag von oben behandelt Wartezeiten für Batch Dateien ....
Mitglied: 11193
11193 May 23, 2005 at 07:16:30 (UTC)
Goto Top
Prima, das hat auch geklappt. Nun noch eine letzte Frage:

xcopy "K:\Access Datenbank\Backup\backup.mdb" c:\backup\backup.mdb /Y

Wenn der Ordner backup unter c:\ noch nicht existiert und neu erstellt werden
muss dann fragt die Batch Datei ob es sich bei dem Zielpfad um eine Datei
oder einen Ordner handelt. Es handelt sich in meinem Fall um eine Datei. Kann
man diese Abfrage umgehen und ihm direkt deutlich machen dass es sich um
eine Datei handelt? Die Frage kommt zwar nur einmal (wenn der Ordner und die
Datei kopiert sind ergibt sich das ja nicht mehr), aber es wäre trotzdem
anwenderfreundlicher.
Member: Enne
Enne May 23, 2005 at 07:27:27 (UTC)
Goto Top
Da muss ich leider endgültig passen ...

Hoffe ich konnte dir trotzdem weiterhelfen ....

Grüße aus Belm (Osnabrück)

Enne
Mitglied: 11193
11193 May 23, 2005 at 07:28:58 (UTC)
Goto Top
Kein Problem. Hast mir schon sehr gut weitergeholfen.

Gruß aus Köln
Member: meto
meto May 23, 2005 at 07:50:25 (UTC)
Goto Top
Hallo!

Schreib doch einfach xcopy "K:\Access Datenbank\Backup\backup.mdb" c:\backup\* /Y

Wenn du doch mal mehrere Dateien kopieren willst, solltest du noch /I anhängen.

Gruß
meto
Member: linkit
linkit May 23, 2005 at 09:42:19 (UTC)
Goto Top
Hallo,


möchte ein paar Kommentare dazu abgeben.

Wenn K: ein Netzlaufwerk ist, dann solltest du besser die UNC Schreibweise verwenden.

Autostart finde ich nicht gut, da dazu der Server angemeldet werden muß. An einem Server sollte generell nicht gearbeitet werden und sich er ist er auch nur ohne Anmeldung. Alle entsprechenden Aufgaben sollten über Dienste abgewickelt werden.

Deine Batchdatei kannst du über die geplanten Tasks auch ohne Anmeldung starten.

Du solltest die Sicherung nicht auf c:\backup ablegen.... die root sollte generell sauber bleiben. Ist vielleicht zwar in diesem Fall nur ein Schönheitsfehler, aber dein Fernseher steht ja auch nicht auf dem Flur.

Wie mein Vorredner schon gesagt hat, kannst du mit /I die Frage nach dem Verzeichnis unterdrücken.

Wenn du auf der Kommandozeile xcopy /? > xchilfe.txt eingibst und danach edit xchilfe.txt, kannst du in aller ruhe alle Switches studieren.


Für umfangreiche Sicherungen per Batch und Möglichkeiten solltest du robocopy von Microsoft verwenden. Findest du im Resource Kit.
Member: meto
meto May 23, 2005 at 10:42:06 (UTC)
Goto Top
UNC Schreibweise ist auf jedenfall sicherer, weil dann das Netzlaufwerk nicht verbunden seien muss.

Das mit dem Autostart ist zwar nicht wirklich schön aber auch aus meiner Sicht kein Problem, da er nicht Autostart auf dem Server meint (das wäre eins!) sonder Autostart von einem Clienten. So verstehe ich es jedenfalls.

Beim Taskplaner kann es geschehen, dass der Rechner nicht an ist, wenn der Zeitpunkt zum Ausführen des Skriptes gekommen ist. So wird der Kopiervorgang nicht gestartet. Da ist eine Autostartvariante schon am sinnvollsten und einfachsten wenn beim Systemstart kopiert werden soll.

Mit dem /I muss man allerdings aufpassen, da es nur funktioniert, wenn auch wirklich mehrere Dateien kopiert werden. In diesem Fall ist es nur eine. Deshalb muss der Dateiname unbedingt mit einem * angegeben werden. Ist das nicht der Fall fragt er auch trotz /I.