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...
M

Martin

Threadstarter
Mitglied seit
02.12.2008
Beiträge
493
Standort
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

Andy

Administrator
Team
Mitglied seit
16.08.2001
Beiträge
12.370
Alter
45
Standort
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

Bullayer

Schwergewicht
Mitglied seit
19.07.2006
Beiträge
24.157
Standort
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

HaraldL

Mitglied seit
26.07.2006
Beiträge
5.866
Standort
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.
 
M

Martin

Threadstarter
Mitglied seit
02.12.2008
Beiträge
493
Standort
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

Bullayer

Schwergewicht
Mitglied seit
19.07.2006
Beiträge
24.157
Standort
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

Mike

i7-6700HQ
Team
Mitglied seit
21.09.2006
Beiträge
24.382
Standort
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 :)
 
M

Martin

Threadstarter
Mitglied seit
02.12.2008
Beiträge
493
Standort
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

Mike

i7-6700HQ
Team
Mitglied seit
21.09.2006
Beiträge
24.382
Standort
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 ;)
 
Bullayer

Bullayer

Schwergewicht
Mitglied seit
19.07.2006
Beiträge
24.157
Standort
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

HaraldL

Mitglied seit
26.07.2006
Beiträge
5.866
Standort
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

Mike

i7-6700HQ
Team
Mitglied seit
21.09.2006
Beiträge
24.382
Standort
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

  • Probleme mit dem DOS-Befehl "ren" in Batch-Dateien

    Probleme mit dem DOS-Befehl "ren" in Batch-Dateien: Hallo Community! In meinem Windows 10 (1909) ist die cmd.exe mit dem Zeitstempel 20.01.2020 17:01 und der Versionsnummer 10.0.18362.449...
  • Wie erzeuge ich per Batch eine Batch-Datei, wenn clip und exit darin vorkommen?

    Wie erzeuge ich per Batch eine Batch-Datei, wenn clip und exit darin vorkommen?: F:\ ist meine RAM-Disk, aber egal. Ich habe hier eine Batchdatei erstellt mit folgendem Inhalt: echo "%var1%%var2%%var3% | clip&del...
  • Lässt sich per Batch/CMD unter Win10 ermitteln, welche Major Release man hat?

    Lässt sich per Batch/CMD unter Win10 ermitteln, welche Major Release man hat?: Frohe Weihnachten. :) Lässt sich per Batch/CMD unter Win10 ermitteln, welche Major Release man hat? Also z.B 1511 oder 1903? Mit dem Befehl...
  • Batch called Taskkill.bat causes problems!

    Batch called Taskkill.bat causes problems!: I just created a simple batch and came into doubt. The command: taskkill /T /IM notepad.exe pause Lead to an endless loop in the cmd window...
  • Per Batch eine VBS-Datei erstellen, die keine ""-Zeichen enthält

    Per Batch eine VBS-Datei erstellen, die keine ""-Zeichen enthält: Ich versuche, aus Batch heraus ein VBS-File anzulegen: echo abc > F:\neuedatei.vbs echo "Set link = Shell.CreateShortcut(DesktopPath &...
  • Ähnliche Themen

    Oben