Batch zerhackt den Desktop

Diskutiere Batch zerhackt den Desktop im Programmierung Forum im Bereich Software Forum; Hallo, wir haben bei uns eine Batch geschrieben. Ein Aussenmitarbeiter, kam heute wieder und hat sich ins Netzwerk eingeloggt. Beim einloggen...

Martin

Threadstarter
Dabei seit
02.12.2008
Beiträge
493
Ort
nähe Wittenburg
Hallo,

wir haben bei uns eine Batch geschrieben. Ein Aussenmitarbeiter, kam heute wieder und hat sich ins Netzwerk eingeloggt. Beim einloggen ins Netzwerk wird ein Ordner auf dem Server zu dem Desktop/Laptop PC synchronisiert.

Bei allen geht es, nur bei ihm ging es nicht. Er loggte sich ein, die vorhandenen Daten auf dem Desktop wurden alle gelöscht.

Skript ist folgendes:

Code:
rem -------------------------------------------------------------------------
rem Ordner wird auf dem Desktop des aktuellen Benutzers erstellt
rem -------------------------------------------------------------------------
c:
mkdir Desktop\Vorlagen
cd "%homepath%\Desktop\Vorlagen"
del/q *.*
xcopy \\server\DOKU\Dokumentenvorlagen\allgemeine_Vorlagen\*.* "%homepath%\Desktop\Vorlagen" /I



Gruß Martin
 

Andy

Administrator
Team
Dabei seit
16.08.2001
Beiträge
13.077
Alter
46
Ort
Wilder Süden
Vermutlich irgendwas mit dem folgenden Befehl schiefgegangen
cd "%homepath%\Desktop\Vorlagen"

Was beinhaltet denn die Variable %homepath% auf dem betroffenen Rechner?
 

Bullayer

Schwergewicht
Dabei seit
19.07.2006
Beiträge
24.167
Ort
DE-RLP-COC
Ändere mal die Zeile "mkir Desktop\Vorlagen" auf "mkdir %homepath%\Desktop\Vorlagen" ab. Wenn du allerdings ein Verzeichnis neu anlegst brauchst du es nicht zu löschen, das ist nämlich leer. Geschickter würdest du erstmal die Existenz des Vorlagenverzeichnisses prüfen und es nur dann anlegen, wenn es nicht vorhanden ist.
 

HaraldL

Dabei seit
26.07.2006
Beiträge
5.980
Ort
Niederbayern
Derjenige der das "mkdir Desktop\Vorlagen" geschrieben hat gehört mit 22Zoll-Röhrenmonitoren beworfen ;) Das erstellt diesen Ordner da wo die Shell gerade zufällig den aktuellen Ordner öffnet. In der Zeile darunter geht es auf einmal mit vorangestellten "%homepath%", warum also nicht vorher auch?

Der falsche Ablauf ist also, zuerst wird der Ordner "Vorlagen" irgendwo in einem falschen Ordner angelegt, danach klappt der Befehl CD eben nicht weil der Ordner auf dem Desktop nicht existiert. Als nächstes werden dann alle Dateien in dem Ordner gelöscht in dem sich die Shell zufällig befindet weil das CD vorher ja nicht geklappt hat. Das kann jetzt "nur" der Desktop gewesen sein oder aber auch der gesamte Profilordner!

Möglich ist auch daß aufgrund von Berechtigungseinstellungen das mkdir nicht klappt. Du solltest direkt nach dem CD eine Zeile einfügen wie "IF ERRORLEVEL 1 GOTO KLAPPTNICHT" und am Ende der Batch eine entsprechendes Label wie ":KLAPPTNICHT" damit er den Vorgang überspringt wenn das CD nicht möglich war. Dann kopiert er zwar nichts aber löscht auch nicht willkürlich.

Die Batch oben ist nicht russisches Roulette, das ist redmond'sches Roulette.
 

Martin

Threadstarter
Dabei seit
02.12.2008
Beiträge
493
Ort
nähe Wittenburg
Derjenige der das "mkdir Desktop\Vorlagen" geschrieben hat gehört mit 22Zoll-Röhrenmonitoren beworfen ;) Das erstellt diesen Ordner da wo die Shell gerade zufällig den aktuellen Ordner öffnet. In der Zeile darunter geht es auf einmal mit vorangestellten "%homepath%", warum also nicht vorher auch?

Der falsche Ablauf ist also, zuerst wird der Ordner "Vorlagen" irgendwo in einem falschen Ordner angelegt, danach klappt der Befehl CD eben nicht weil der Ordner auf dem Desktop nicht existiert. Als nächstes werden dann alle Dateien in dem Ordner gelöscht in dem sich die Shell zufällig befindet weil das CD vorher ja nicht geklappt hat. Das kann jetzt "nur" der Desktop gewesen sein oder aber auch der gesamte Profilordner!

Möglich ist auch daß aufgrund von Berechtigungseinstellungen das mkdir nicht klappt. Du solltest direkt nach dem CD eine Zeile einfügen wie "IF ERRORLEVEL 1 GOTO KLAPPTNICHT" und am Ende der Batch eine entsprechendes Label wie ":KLAPPTNICHT" damit er den Vorgang überspringt wenn das CD nicht möglich war. Dann kopiert er zwar nichts aber löscht auch nicht willkürlich.

Die Batch oben ist nicht russisches Roulette, das ist redmond'sches Roulette.

Ich habe es nicht geschrieben, ein Arbeitskollege von mir xD

Wie würdest du es denn machen?! :confused
 

Bullayer

Schwergewicht
Dabei seit
19.07.2006
Beiträge
24.167
Ort
DE-RLP-COC
wie wärs denn erstmal mit:
Code:
c:
cd\
dann befindest du dich mit absoluter Sicherheit im Root von C:. Dann mit
Code:
cd %homepath%.....
in das gewünschte Verzeichnis wechseln, prüfen ob das Unterverzeichnis "Vorlagen" existiert, ggf. neu anlegen, alte Daten (wenn vorhanden) rauslöschen, neue reinkopieren.
 

Mike

i7-6700HQ
Dabei seit
21.09.2006
Beiträge
24.384
Ort
Outdoor oder vorm Rechner
Die Batch oben ist nicht russisches Roulette, das ist redmond'sches Roulette.
Da hat M$ aber keine Schuld, wenn solche Batch-Dateien geschrieben werden.
Da hat die Statistik recht, die besagt, dass 90% der Fehler vorm PC sitzen.

Man muss seinen Batch halt auch auf mehreren PCs testen und auch mitdenken ob die Pfade alle passen wenn sie angelegt und ausgeführt werden.

Es stellt sich auch die Frage ob man robocopy nehmen könnte, da es zum synchronisieren besser geeignet ist als das uralte xcopy :)
 

Martin

Threadstarter
Dabei seit
02.12.2008
Beiträge
493
Ort
nähe Wittenburg
Da hat M$ aber keine Schuld, wenn solche Batch-Dateien geschrieben werden.
Da hat die Statistik recht, die besagt, dass 90% der Fehler vorm PC sitzen.

Man muss seinen Batch halt auch auf mehreren PCs testen und auch mitdenken ob die Pfade alle passen wenn sie angelegt und ausgeführt werden.

Es stellt sich auch die Frage ob man robocopy nehmen könnte, da es zum synchronisieren besser geeignet ist als das uralte xcopy :)



Ich hatte ja ne Batch geschrieben, aber die wurde nicht genommen?!
Ach ich sehe grade, meine wurde auch bearbeitet, bei mir wurde auch mkdir verwendet, hatte es eigentlich über Varaiblen gemacht.

Code:
set Datum=%date%,%time%:~0,2%.%time:~3.2%,.%time:~6.2%

mkdir "%USERPROFILE%\Desktop\Allgemeine_Vorlagen" 

robocopy "\\server\DOKU\Dokumentenvorlagen\allgemeine_Vorlagen" "%USERPROFILE%\Desktop\Allgemeine_Vorlagen" /MIR  /XF "~$*"

del %USERPROFILE%\Desktop\Allgemeine_Vorlagen\~$*.*/A:H
 

Mike

i7-6700HQ
Dabei seit
21.09.2006
Beiträge
24.384
Ort
Outdoor oder vorm Rechner
Ach ich sehe grade, meine wurde auch bearbeitet, bei mir wurde auch mkdir verwendet, hatte es eigentlich über Varaiblen gemacht.
Derjenige wird seine "Gründe" :wacko gehabt haben beim Nachbearbeiten.
Mir unverständlich dass andere immer wieder glauben was ändern zu müssen und dann z.B. falsche %variablen% nehmen ;)
 

Bullayer

Schwergewicht
Dabei seit
19.07.2006
Beiträge
24.167
Ort
DE-RLP-COC
....
Mir unverständlich dass andere immer wieder glauben was ändern zu müssen und dann z.B. falsche %variablen% nehmen ;)

Sowas schließe ich generell dadurch aus, dass ich ein VB-Programm schreibe, kompiliere und nur die EXE weitergebe. Da fummelt mir keiner dran rum.
 

HaraldL

Dabei seit
26.07.2006
Beiträge
5.980
Ort
Niederbayern
Mit den "gesammelten Werken" hier wären wir dann bei:
Code:
rem -------------------------------------------------------------------------
rem Ordner wird auf dem Desktop des aktuellen Benutzers erstellt
rem -------------------------------------------------------------------------
c:
mkdir [COLOR="Red"]"%USERPROFILE%\[/COLOR]Desktop\Vorlagen
cd "%[COLOR="Red"]USERPROFILE[/COLOR]%\Desktop\Vorlagen"
[COLOR="Red"]if errorlevel 1 goto klapptnicht[/COLOR]
del/q *.*
xcopy \\server\DOKU\Dokumentenvorlagen\allgemeine_Vorlagen\*.* "%[COLOR="Red"]USERPROFILE[/COLOR]%\Desktop\Vorlagen" /I
[COLOR="Red"]goto ende
:klapptnicht
echo Vorlagen-Ordner konnte nicht angelegt werden!
pause
:ende[/COLOR]

USERPROFILE wie in deinem Beispiel ist auch sinnvoller als HOMEPATH weil da der Laufwerksbuchstabe mit dabei ist. Wenn jemand sein Userprofil auf ein anderes Laufwerk als C: verlegt hat gibt HOMEPATH wieder Ärger.

Und ROBOCOPY wäre natürlich effektiver als DEL+XCOPY, aber wichtiger ist zunächst das richtige Ordner-Handling und meiner Meinung nach die Errorlevel-Abfrage bevor was Falsches passiert!
 

Mike

i7-6700HQ
Dabei seit
21.09.2006
Beiträge
24.384
Ort
Outdoor oder vorm Rechner
Es fängt einmal damit an, dass der DESKTOP verwendet wird :thumbdown

Der Desktop lässt sich NICHT bei jedem Windows mit der gleichen Variablen ansprechen. Das ist leider so. Außerdem sollten AM DESKTOP keine Daten gespeichert werden.

Das Ganze wäre sooo einfach, wenn ein eigenes Vorlagen-Verzeichnis genommen werden würde und dieses am Desktop verlinkt wäre.

Außerdem könnte man mittels Batch die Dateien vorher kopieren (Sicherheit) und erst beim nächsten Mal löschen (nicht sofort).

Zusätzlich kommt es mir komisch vor, dass es Probleme geben kann, wenn Vorlagen verschwinden. Die müssen ja sowieso irgendwo gesichert sein.

Ich würde ein einheitliches Verzeichnis auf C: nehmen oder D: (je nach eurer Struktur) und dort diese Dateien "lagern"

VOR ALLEM sollte es an einem Ort sein, der ausschließt, dass durch diese Aktion andere Dateien beeinflusst werden (z.B. Desktop, Eigene Dateien etc.). An solchen Orten kann durch einen kleinen Unterschied viel falsch gemacht werden.

Eine Überprüfung innerhalb des Scripts ob der Ordner überhaupt existiert wäre auch nicht schlecht (if exist ...)
 
Thema:

Batch zerhackt den Desktop

Batch zerhackt den Desktop - Ähnliche Themen

[Batch] Dateiabgleich wenn der Laptop an ist: Hallo, Chefin will gerne das die allgeminem Dokumenten die bei uns auf W: liegen, auf jeden Laptop übertragen werden. Klingt blöd ist aber so...
Batch - Meldung unterdrücken: Guten Abend allerseits! :) Ich hab mir gerade ein kleines Batch-Script erstellt um meine Dateien zwischen PC und Server zu synchronisieren. Das...
Wie man/frau ein (Batch-)Programm schreibt: Hi Die Systemfunktionen des Kommandointerpreters sind hilfreich und nuetzlich fuer alle moeglichen Aufgaben, aber leider schlecht bis gar nicht...
Der Dau V 2.10: 1994 (Duemmster Anzunehmender User) Also der Cousin eines Freundes arbeitet wirklich in der Serviceabteilung bei Nixdorf...
Sechs Festplatten-Imager im Test: Karsten Violka Sicherheits-Klone Sechs Festplatten-Imager für die Systemsicherung Indem Sie ein Abbild Ihrer Systempartition anfertigen und es...
Oben