Batch zerhackt den Desktop

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

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
 
#2
Andy

Andy

Administrator
Team
Dabei seit
16.08.2001
Beiträge
12.370
Alter
44
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?
 
#3
Bullayer

Bullayer

Schwergewicht
Dabei seit
19.07.2006
Beiträge
24.135
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.
 
#4
HaraldL

HaraldL

Dabei seit
26.07.2006
Beiträge
5.733
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.
 
#5
M

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
 
#6
Bullayer

Bullayer

Schwergewicht
Dabei seit
19.07.2006
Beiträge
24.135
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.
 
#7
Mike

Mike

TEAM
Team
Dabei seit
21.09.2006
Beiträge
24.341
Ort
in der Nähe eines Rechners
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 :)
 
#8
M

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
 
#9
Mike

Mike

TEAM
Team
Dabei seit
21.09.2006
Beiträge
24.341
Ort
in der Nähe eines Rechners
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 ;)
 
#11
Bullayer

Bullayer

Schwergewicht
Dabei seit
19.07.2006
Beiträge
24.135
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.
 
#12
HaraldL

HaraldL

Dabei seit
26.07.2006
Beiträge
5.733
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!
 
#13
Mike

Mike

TEAM
Team
Dabei seit
21.09.2006
Beiträge
24.341
Ort
in der Nähe eines Rechners
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

  • GELÖST Batch script kopieren von Autostart in Ordner der nach Username benannt ist.

    GELÖST Batch script kopieren von Autostart in Ordner der nach Username benannt ist.: Hallo ihr Lieben, Zu meiner Sittuation: Ich versuche ein Script zu erstellen das den Inhalt der Autostart von mehreren Usern auf einem...
  • Kommandozeilen Befehl in Batch nicht, am Prompt schon

    Kommandozeilen Befehl in Batch nicht, am Prompt schon: Hallo alle zusammen Ich habe eine Kommandozeile: for /f "skip=3 delims=" %i in ('dir /a-D /o-d /b *.*') do Del "%~i" Damit will ich alle...
  • Batch sprites aus txt dateien laden und bewegen/ ist es realiesierbar ein 3d batch spiel zu scripten

    Batch sprites aus txt dateien laden und bewegen/ ist es realiesierbar ein 3d batch spiel zu scripten: Hallo Winboard Community, Meine frage ist denke ich klar nun ich will das ganze aus dateien laden Wegen der übersichtlichkeit und das mit den 3d...
  • GELÖST Zeit per batch aktualisieren?

    GELÖST Zeit per batch aktualisieren?: Hallo! Ich hab hier einige PCs für Softwaretests rumstehen. Auf denen werden immer Images zurückgespielt wenn eine neue SW getestet werden soll...
  • Windows 10 Bildschirmauflösung mit batch Datei ändern

    Windows 10 Bildschirmauflösung mit batch Datei ändern: Hallo Ich möchte gerne zwei batch Dateien erzeugen mit denen ich jeweils folgendes machen kann: Auflösung auf 1920 * 1080 stellen und...
  • Ähnliche Themen

    Oben