deboe1986
Goto Top

BatchScript zum Beschreiben von USB-Sticks

Brauche Hilfe bei der Erstellung eines Script zum Beschreiben von USB-Sticks

Hallo liebe Community,

ich bin Neuling und habe gleich mal ein paar Fragen - vielleicht kann mir hier jemand behilflich sein.

Kurze Einleitung:
Ich bin Auszubildender Informatikkaufmann und soll für eine Messe knapp 3000 USB-Sticks mit Daten beschreiben.
Hierzu habe ich 10 USB Hubs mit je 7 USB Anschlüssen. Wegen der Laufwerkbegrenzung werden lediglich 2 Hubs pro Rechner angeschlossen (5 Rechner á 14 USB Ports).

Da manche Laufwerkbuchstaben schon belegt sind (Netzlaufwerke etc.), musste ich eine Lösung für die Festlegung dieser Laufwerk-Namen finden.
Hierzu benutze ich die Freeware USBDLM V4.2.4. Die freien und belegten Buchstaben werden in die USBDLM.inf eingetragen:

[DriveLetters]
Letters=A,B,F,G,H,J,K,L,M,O,P,Q,R,S,T,U,V
[ExcludedLetters]
Letters=C,D,E,I,N,W,X,Y,Z

Wenn ich nun USB-Sticks einstecke, bekommt der 1. die Bezeichnung A:\ , der 2. B:\ der 3. F:\ usw.
Das Batch-Script das ich verwende sieht momentan so aus (mache das erst seit heute, nicht lachen):

@echo off
If Exist A:\NUL xcopy C:\TEMP\Testordner\ A:\Testordner /y /i /e /v
If Exist B:\NUL xcopy C:\TEMP\Testordner\ B:\Testordner /y /i /e /v
If Exist F:\NUL xcopy C:\TEMP\Testordner\ F:\Testordner /y /i /e /v
...usw...

Leider gibt es hierbei nun einige Probleme. Habe das testweise mal mit 8 PDF-Dateien ausprobiert (Gesamtgröße 1,06 GB)... das Ganze dauert ziemlich lange pro Stick - und die Sticks werden nacheinander, nicht simultan beschrieben.
Gibt es eine Möglichkeit diese simultan beschreiben zu lassen? Oder würdet ihr davon abraten. Pro USB-Hub habe ich ja eine Übertragunsrate von 420 oder 480 MBit/s. Dies teilt sich auf die 7 Ports auf... Wäre es besser das nacheiander zu beschreiben oder doch simultan. Gibt es bessere / schnellere Möglichkeiten? Desweiteren bräuchte ich zusätzlich einen Befehl, der gleich nach Beendigung des Kopiervorganges den USB-Stick "abschießt" - also sicher entfernt.. Bin für jede Hilfe / Anregung etc. sehr dankbar.

Grüße,
Dennis B.

Content-ID: 108047

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

Ausgedruckt am: 19.11.2024 um 01:11 Uhr

60730
60730 04.02.2009 um 15:51:42 Uhr
Goto Top
Servus und willkommen,

an deiner Stelle würde ich entweder aus einem Script viele machen -denn die können dann auch einen Schritt nach dem anderen machen und dieser Schritt wäre immer der eine USB Stick:

Beispiel USB2A.cmd
:start
If Exist A:\ xcopy C:\TEMP\Testordner\ A:\Testordner /y /i /e /v
rundll32.exe shell32.dll, Control_RunDLL hotplug.dll
@echo Laufwerk a auswerfen & neuen Stick  anklemmen
pause
goto start
.. oder das ganz Testweise mit einem Imager laufen lassen.

gruß
bastla
bastla 04.02.2009 um 17:12:08 Uhr
Goto Top
Hallo Deboe1986 und willkommen im Forum!

Wenn Du USBDLM gefunden hast, wäre der Weg zu RemoveDrive V1.9 - Laufwerke sicher entfernen auch nicht mehr weit gewesen ... face-wink

Ob nacheinander oder parallel (siehe TimoBeils Vorschlag) besser funktioniert, musst Du selbst austesten.

Grüße
bastla
Deboe1986
Deboe1986 05.02.2009 um 08:02:42 Uhr
Goto Top
Vielen lieben Dank! Werde das im Laufe des Tages alles mal testen.

Sooo... hab jetzt für jedes einzelne Laufwerk eine kleine Batch-Datei erstellt, die wie folgt aussieht:

Dateinmame "USB2A.bat"

@echo off
If Exist A:\ xcopy C:\boerschd\*.* A:\Testordner /y /i /e /v
If Exist A:\ mountvol A:\ /d
exit

Dateiname "USB2B.bat"

@echo off
If Exist B:\ xcopy C:\boerschd\*.* B:\Testordner /y /i /e /v
If Exist B:\ mountvol B:\ /d
exit

...
Aufgerufen sollen diese kleinen Batch-Dateien von einer einzigen - damit man sich die Klickerei erspart:

echo "Batch-Dateien werden geladen ..."
call USB2A.bat
...(alle anderen Batch-Dateien)...
call USB2V.bat
echo msgbox"Der Kopiervorgang wurde beendet!",vbExclamation , "Kopiervorgang abgeschlossen"> msg.vbs
msg.vbs
erase msg.vbs
exit

Leider funktioniert das nicht mit dem Aufrufen - das Fenster poppt kurz auf aber schließt sofort wieder.
Liegt es daran, weil ich momentan nur 7 USB-Sticks angeschlossen habe und es kein Laufwerk A:\ gibt?
Aber dafür ist doch das If Exist in der Batch.. Bitte nochmal um Hilfe.. hoffe ich nerve nicht.
Ansonsten müsste das ja so in die Richtung funktionieren... was meint ihr?

Grüße,
DeBoe

*update*

Habe das nun ganz einfach gemacht - aber funktioniert:

Datei 01Start.bat :

@echo off
If Exist A:\NUL xcopy C:\boerschd\*.* A:\Testordner /y /i /e /v
If Exist B:\NUL xcopy C:\boerschd\*.* B:\Testordner /y /i /e /v
If Exist F:\NUL xcopy C:\boerschd\*.* F:\Testordner /y /i /e /v
If Exist G:\NUL xcopy C:\boerschd\*.* G:\Testordner /y /i /e /v
If Exist H:\NUL xcopy C:\boerschd\*.* H:\Testordner /y /i /e /v
If Exist J:\NUL xcopy C:\boerschd\*.* J:\Testordner /y /i /e /v
If Exist K:\NUL xcopy C:\boerschd\*.* K:\Testordner /y /i /e /v
If Exist L:\NUL xcopy C:\boerschd\*.* L:\Testordner /y /i /e /v
If Exist M:\NUL xcopy C:\boerschd\*.* M:\Testordner /y /i /e /v
If Exist O:\NUL xcopy C:\boerschd\*.* O:\Testordner /y /i /e /v
If Exist P:\NUL xcopy C:\boerschd\*.* P:\Testordner /y /i /e /v
If Exist Q:\NUL xcopy C:\boerschd\*.* Q:\Testordner /y /i /e /v
If Exist R:\NUL xcopy C:\boerschd\*.* R:\Testordner /y /i /e /v
If Exist S:\NUL xcopy C:\boerschd\*.* S:\Testordner /y /i /e /v
If Exist T:\NUL xcopy C:\boerschd\*.* T:\Testordner /y /i /e /v
If Exist U:\NUL xcopy C:\boerschd\*.* U:\Testordner /y /i /e /v
If Exist V:\NUL xcopy C:\boerschd\*.* V:\Testordner /y /i /e /v
echo msgbox"Der Kopiervorgang wurde beendet!",vbExclamation , "Kopiervorgang abgeschlossen"> msg.vbs
echo msgbox"Finish.bat wird jetzt ausgeführt!",vbExclamation , "Finish.bat"> msg2.vbs
msg.vbs
msg2.vbs
erase msg.vbs
erase msg2.vbs
call 02Finish.bat
exit

Datei 02Finish.bat:
@echo off
If Exist A:\ mountvol A:\ /d
If Exist B:\ mountvol B:\ /d
If Exist F:\ mountvol F:\ /d
If Exist G:\ mountvol G:\ /d
If Exist H:\ mountvol H:\ /d
If Exist J:\ mountvol J:\ /d
If Exist K:\ mountvol K:\ /d
If Exist L:\ mountvol L:\ /d
If Exist M:\ mountvol M:\ /d
If Exist O:\ mountvol O:\ /d
If Exist P:\ mountvol P:\ /d
If Exist Q:\ mountvol Q:\ /d
If Exist R:\ mountvol R:\ /d
If Exist S:\ mountvol S:\ /d
If Exist T:\ mountvol T:\ /d
If Exist U:\ mountvol U:\ /d
If Exist V:\ mountvol V:\ /d
echo msgbox"Die vorhandenen USB-Laufwerke wurden sicher entfernt!",vbExclamation , "USB-Sticks sicher abschließen"> msg.vbs
msg.vbs
erase msg.vbs
exit

*

Vielen Dank für alle Antworten und Anregungen!!!

Grüße,
Dennis
uwesieber
uwesieber 23.03.2010 um 21:46:55 Uhr
Goto Top
MountVol /D entfernt den Laufwerksbuchstaben - mit "Sicher Entfernen" hat
das nichts zu tun, das Abziehen des Sticks wird dadurch nicht sicherer.
RemoveDrive war der richtige Hinweis.

USBDLM weiß den Buchstaben den es gerade zugeordnet hat und stellt ihn in
den Kommandozeilen-Variablen %Drive%, %DriveLetter% und %Root%
zur Verfügung (z.B. "U:", "U", "U:\"). Damit kann man sich die Kopfstände mit
"If Exist xxx" sparen, indem man einen OnArrival-Abschnitt entsprechend
konfiguriert.

Um das Schreiben möglichst schnell abzuwickeln, würde ich ein Image eines
Sticks erstellen, ermitteln, bis wohin Nutzdaten vorhanden sind, das Image
kürzen (http://www.uwe-sieber.de/files/setfilesize.zip) und das verkürzte Image
dann per OnArrival-Abschnitt auf jeden neu angeschlossenen Stick schreiben.
Suche mal "DD for Windows".

Gruß Uwe