tester12
Goto Top

Verzeichnisse auf USB-Stick

Hallo alle zusammen,

ich habe folgendes Problem: Und zwar vergesse ich bei uns in der Schule nach Unterrichtsende öfter mal bestimmte Verzeichnisse auf den USB-Stick zu kopieren. Da wir aber keine Adminrechte haben, kann ich natürlich kein Programm installieren, was solches für mich erledigen könnte. Nun weiß ich, daß man sowas auch mit einer Batchdatei machen kann. Nur weiß ich nicht so recht wie, denn das Skript sollte auf dem US-Stick automatisch beim Herunterfahren des PC´s ein Verzeichnis anlegen, das das aktuelle Datum, oder eventuell eine Art Versionshinweis enthält, der sich jedesmal um eins hochzählt. Kann mir da jemand von euch helfen bitte ?

Content-Key: 99061

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

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

Mitglied: 36831
36831 Oct 12, 2008 at 14:08:22 (UTC)
Goto Top
Moin,

frage doch einfach mal im Bereich Entwicklung --> Batch nach. Biber und Bastla sind dort die "Haupt-Batcher".

Beim Herunterfahren wird vermutlich nicht gehen, aber, wie wäre es mit xcopy, um Ordner zu kopieren? Das Skript könntest du dann manuell vom USB-Stick starten.

MfG,
VW
Member: miniversum
miniversum Oct 12, 2008 at 14:08:55 (UTC)
Goto Top
Das mit dem Kopieren ist kein Problem.
Mit Datum wäre das dann so:
@xcopy "C:\Quellverzeichnis" "%~d0\Sicherung vom %date%" /E  
Die müßtest du allerdings manuell starten. Das ausführen beim herunterfahren kannst du denke ich ohne Adminrechte nicht herbeiführen.
Die Pfade müssen halt angepast werden. Sollen mehrere Verzeichnisse kopiert werden fügst du einfach weitere Zeilen hinzu die entsprechend dieser Zeile aussehen.
Befindet sich die Betchdatei auf dem USB Stick steht %~d0 hier für den Laufwerbsbuchstaben des USB Sticks bzw. das Laufwerk indem die Batchdatei selbst liegt.

Edit: xcopy statt copy
Member: bastla
bastla Oct 12, 2008 at 15:58:51 (UTC)
Goto Top
... wobei das "x" vor dem "copy" nicht fehlen sollte, und der Schalter "/I" (oder ein "\" unmittelbar nach %date%) lästige Fragerei nach der Art des Zieles erspart - daher also etwa:
@xcopy "C:\Quellverzeichnis" "%~d0\Sicherung vom %date%" /E /I  
Übersichtlicher finde ich übrigens eine andere Datumsschreibweise:
@xcopy "C:\Quellverzeichnis" "%~d0\Sicherung vom %date:~-4%-%date:~-7,2%-%date:~-10,2%" /E /I  
Grüße
bastla
Member: miniversum
miniversum Oct 12, 2008 at 16:37:08 (UTC)
Goto Top
Das x ging woll verlohren.... Ich werds oben nochmal ändern..
Member: Biber
Biber Oct 13, 2008 at 09:22:54 (UTC)
Goto Top
Moin tester12,

Adminrechte brauchst Du nicht unbedingt, um ein Logoffscript einzutüten.
Allerdings wäre es einfacher, wenn Du Rechte hast, über Start->Ausführen die Gruppenrichtlinien mit "gpedit.msc" auszuführen.
Wenn Du das darfst, dann kannst Du über ..
-> "Richtlinien für lokaler Computer"->"Benutzerkofiguration"->"Skripts (Anmelden/Abmelden)"
...einen zusätzlichlichen Schnipsel wie oben skizziert als /zusätzliches) "Logoff-Skript" eintragen.

Bitte prüfe mal dieses Recht.

Dieses LogOff-Script wird beim Abmelden (nicht beim Shutdown) aktiviert.
Es ginge natürlich auch über ein Shutdownskript, aber wozu?
Das würde naturgemäß für den Computer und nicht für den User gelten.
Und möglicherweise bei anderen Mitschülern, die mal an dem Rechner hocken für unverständliche Fehlermeldungen sorgen.

Grüße
Biber
Mitglied: 36831
36831 Oct 13, 2008 at 09:33:51 (UTC)
Goto Top
Moin Biber,

ist es nicht mit den lokalen Richtlinien so, dass diese immer für alle User gelten? So kenne ich das jedenfalls.

Grüße,
VW
Member: Biber
Biber Oct 13, 2008 at 09:44:05 (UTC)
Goto Top
Zitat von @36831:
Moin Biber,

ist es nicht mit den lokalen Richtlinien so, dass diese immer
für alle User gelten? So kenne ich das jedenfalls.

Grüße,
VW
Jepp, VW,
da hast Du natürlich Recht....
Montage sind zwar nicht mein einziges Problem, aber das Berechenbarste... *grmmpff*

Also: auch wenn es ein Logoff-Script ist :
Im Skript sollte noch eine Überprüfung erfolgen "if /i "%username%"=="tester12" ...

In einem Shutdownskript könnte die Prüfung in die Grütze gehen... *gg

Grüße
Biber
Member: tester12
tester12 Oct 16, 2008 at 10:20:35 (UTC)
Goto Top
Hallo zusammen und danke für eure netten und hilfreichen Antworten. Sorry, dass ich mich jetzt erst wieder melde. Aber ein Script, das mir beim Benutzerabmelden ausgeführt wird, reicht vollauf. Das mit den Rechten muß ich in 2 Wochen mal kontrollieren, da wir dieses Fach nur alle 2 Wochen haben.
Muß auch mal überprüfen, ob der Laufwerksbuchstabe jedesmal derselbige ist. Ich habe meinem Stick beim Formatieren einen Namen gegeben. Kann man statt des Laufwerkbuchstens ( %~d0 ) auch den "Namen" des Sticks angeben ? Dann wäre er ja auf jedem anderen PC gleich. Natürlich sollte das Script auch überprüfen, ob schon ein Verzeichnis mit dem heutigen Datum auf dem Stick angelegt wurde oder nicht. Man meldet sich ja öfter mal am Tag ab. Dann könnte man zum Datum doch noch einen Versionshinweis dazutüteln, oder nicht ??????? Automatisch ausführbares Batchscript wäre schon super...............
Member: tester12
tester12 Oct 20, 2008 at 18:17:25 (UTC)
Goto Top
Weiß niemand mehr einen Tipp ? Biber oder Bastla ?
Member: miniversum
miniversum Oct 20, 2008 at 18:40:39 (UTC)
Goto Top
Warum willst Du einen Namen nutzen? Einen Laufwerksbuchstaben brauchst du ja dennoch.

Das mit der Kontrolle und Versionshinweiß könnte so gehen:
@echo off
set "quelle=C:\Quellverzeichnis"  
set "ziel=%~d0\Sicherung vom %date:~-4%-%date:~-7,2%-%date:~-10,2%"  
if exist %ziel% set "ziel=%ziel% Version I"  
:check
if exist %ziel% (set "ziel=%ziel%I" & goto:check  
xcopy "%quelle%" "%ziel%" /E /I  
Member: tester12
tester12 Oct 20, 2008 at 19:20:45 (UTC)
Goto Top
Dann kann man also so eine Batchdatei immer nur für einen PC verwenden, denn nicht bei jedem PC ist der Laufwerksbuchstaben des Sticks gleich. Kann man zumindest an seinen PC´s Zuhause das so einrichten, dass der Laufwerksbuchstaben des Sticks an allen PC´s ( bei mir sind es 3 ) immer gleich lautet, z.Bsp. wie in der Schule ?
Member: miniversum
miniversum Oct 20, 2008 at 19:39:52 (UTC)
Goto Top
Nein das stimmt so nicht.
Die Variable %~d0 ersetzt in einer Batch den Laufwerksbuchstaben (z.B. H: ) des Laufwerks indem die Batchdatei liegt. Dabei ist es egal welchen Laufwerksbuchstaben der Stick hat. Du kansnt es so deutlich machen indem du folgende Batchdatei einmal vom USB Stick ausführst udn einmal von C (oder sonst einem Laufwerk):
@echo aktuelles laufwerk ist: %~d0
Du wirst sehen das der angezeigt Laufwerksbuchstabe immer dem Ort entspricht indem die Batchdatei liegt.
Member: tester12
tester12 Oct 20, 2008 at 19:43:24 (UTC)
Goto Top
Ah, o.k. vielen Dank. Jetzt habe ich noch eine letzte Frage. Da ich mehrere USB-Sticks habe, aber jedesmal der selbe Laufwerksbuchstabe pro PC angezeigt wird, wollte ich noch wissen, ob es eine Möglichkeit gibt, um zu erkennen, welcher Stick gerade eingesteckt ist ( die Daten sollen nur auf einen speziellen Stick kopiert werden ).
Member: miniversum
miniversum Oct 20, 2008 at 19:52:03 (UTC)
Goto Top
Wenn die Batch auf dem USB Stick ist werden die Daten auf den Stickkopiert aufdem die Batch ist.
Member: tester12
tester12 Oct 21, 2008 at 20:26:54 (UTC)
Goto Top
Hallo nochmal zusammen,

in folgendem Satz steckt das Wort "vom" drin:

set "ziel=%~d0\Sicherung vom %date:~-4%-%date:~-7,2%-%date:~-10,2%"

Beim Ausführen der Batchdatei kommt die Fehlermeldung, dass der Befehl "vom" entweder falsch geschrieben ist oder nicht gefunden werden konnte. Was muß ich da noch ändern ?

Im obengenannten Script fehlt in der 6. Zeile die sich schließende Klammer. Wo muß diese genau geschloßen werden ?????
Mitglied: 36831
36831 Oct 21, 2008 at 20:34:46 (UTC)
Goto Top
Bastla hat unten zeitgleich (besser) geantwortet...


Zitat von @tester12:
set "ziel=%~d0\Sicherung vom
%date:~-4%-%date:~-7,2%-%date:~-10,2%"
set "ziel"="%~d0\Sicherung vom %date:~-4%-%date:~-7,2%-%date:~-10,2%"  
sollte/könnte klappen (ungetestet)
Im obengenannten Script fehlt in der 6. Zeile die sich
schließende Klammer. Wo muß diese genau geschloßen
werden ?????

Zitat von @miniversum:
if exist %ziel% (set "ziel=%ziel%I" & goto:check
Ich denke, dass die Klammer ganz am Ende der Zeile geschlossen werden muss.

VW
Member: bastla
bastla Oct 21, 2008 at 20:35:13 (UTC)
Goto Top
Hallo tester12!
Beim Ausführen der Batchdatei kommt die Fehlermeldung, dass der Befehl "vom" entweder falsch geschrieben ist oder nicht gefunden werden konnte. Was muß ich da noch ändern ?
Eigentlich kann sich das nur auf die Verwendung der Variablen "%ziel%" in einer anderen Zeile beziehen und sollte sich durch das konsequente Setzen von Anführungszeichen (wie von miniversum in Zeile 7, nicht aber in den Zeilen 4 und 6, gezeigt) vermeiden lassen.
Im obengenannten Script fehlt in der 6. Zeile die sich schließende Klammer. Wo muß diese genau geschloßen werden ?????
Die schließende Klammer muss an das Ende der Zeile.

Grüße
bastla
Member: miniversum
miniversum Oct 21, 2008 at 21:19:57 (UTC)
Goto Top
mea culpa.
Das kommt davon wenn man das Zeug zu schnell tippt.
Aber ich schrieb ja auch es KÖNNTE so funktionieren.
Ich gelobe aber besserung (wie schon so viele male bei den Mädels immer ;) )
Member: tester12
tester12 Oct 22, 2008 at 18:45:02 (UTC)
Goto Top
hallo nochmal,

jetzt habe ich es nochmal ausprobiert und es öffnet sich zwar das Dos-Fenster, geht aber sofort wieder zu. Es passiert also nichts. Anbei das Script, so wie es jetzt bei mir aussieht:

@echo off
set "quelle=C:\Dokumente und Einstellungen\andeslap\Eigene Dateien\Techniker_Schule\TINF"
set "ziel"="%~d0\Techniker_Schule vom %date:~-4%-%date:~-7,2%-%date:~-10,2%"
if exist %ziel% set "ziel=%ziel% Version I"
:check
if exist %ziel% (set "ziel=%ziel%I" & goto:check)
xcopy "C:\Dokumente und Einstellungen\andeslap\Eigene Dateien\Techniker_Schule\TINF" "ziel"="%~d0\Techniker_Schule" /E /I


Vielleicht hat von euch einer noch eine Idee, warum da nix geht................
Member: bastla
bastla Oct 22, 2008 at 18:49:24 (UTC)
Goto Top
Hallo tester12!

Versuch es damit:
@echo off & setlocal
set "quelle=C:\Dokumente und Einstellungen\andeslap\Eigene Dateien\Techniker_Schule\TINF"  
set "ziel=%~d0\Techniker_Schule vom %date:~-4%-%date:~-7,2%-%date:~-10,2%"  
if exist "%ziel%" set "ziel=%ziel% Version I"  
:check
if exist "%ziel%" (set "ziel=%ziel%I" & goto:check)  
xcopy "%quelle%" "%ziel%" /E /I  
Grüße
bastla