Batch CMD, Laufwerksbuchstaben eingeben

B

BaserDevil

Gast
Hallo,

ich möchte den Ziel Laufwerksbuchstaben eingeben und dann soll robocopy loslegen.
Ist der Code so richtig?
Verbesserungswürdig?

Code:
set /p Drive=Laufwerksbuchstaben eingeben:

# USB Seagate
# robocopy D: %Drive%: /s /R:3 /W:3 /XD "System Volume Information" "$RECYCLE.BIN" 

# USB WD
robocopy D: %Drive%: /s /R:3 /W:3 /XD "System Volume Information" "$RECYCLE.BIN" 

pause

Kann man noch eine elegante Ausgabe kombinieren nach Eingabe?
Also wenn man "S" eingibt, dass dann erscheint "es wird auf Seagate" kopiert oder
wenn man "W" eingibt "es wird auf WD kopiert".

Kann man auch vor der Eingabe alle verfügbaren Laufwerksbuchstaben auslesen und anzeigen lassen?
Vielleicht noch mit Namen?
 
Zuletzt bearbeitet von einem Moderator: (erledigt, Danke)
mit echo den Text vor dem Robocopy schreiben sollte klappen

Edit: Ach so meinst Du das. Wenn die externen Festplatten nen festen Laufwerksbuchstaben haben, dann arbeite im Skript mit Sprungmarken.

z.B. if "%Drive%" = "S" (goto S)
oder if "%Drive%" = "W" (goto W)

:S
echo "kopiere auf Seagate"
goto copy

:W
echo "kopiere auf WD"
goto copy

:copy
robokopy...

Dann hast Du halt nur den einen robocopy aufruf. Der Text, wo rauf kopiert wird fragst Du mit nem If der Variable Drive ab und springst dann bei entsprechender Übereinstimmung in die Sprungmarke, wo der Text steht. Danach springst Du dann zum eigendlichen robocopy Job, der ebenfalls in einer Sprungmarke sitzt.
 
Zuletzt bearbeitet: (Hochkommata vergessen!)
Code:
if [%Drive%] == [S] (
    echo "wird auf seagate kopiert"
    robocopy Seagate
)
if [%Drive%] == [W] ) (
    echo "wird auf wd kopiert"
    robocopy wd
)

Die Volumes auflisten könntest du mittels
Code:
wmic logicaldisk get caption,providername,volumename
 
Hallo,

das mit wmic ist ja cool. Danke.

Das andere mit der Batch werde ich gleich mal probieren, sieht gut aus. :)
Ergänzung ()

Hallo,

funktioniert. Klasse. :)

... Stunden später, jetzt hab es raus. Ganz schön kompliziert mit dem Sprungmarken.

Code:
echo off
wmic cpu get name, systemname
REM wmic logicaldisk where drivetype=3 get name, freespace, filesystem
wmic logicaldisk get caption, volumename
echo.
echo "Laufwerksbuchstaben ZIEL eingeben"
set /p Drive=Laufwerk Ziel eingeben:

if "%Drive%" == "S" (goto S)
if "%Drive%" == "U" (goto U)
if "%Drive%" == "W" (goto W)
if "%Drive%" == "" (goto Nichts)

echo.
echo "falsche Eingabe"
goto Nichts

:S
echo.
echo "kopiere auf USB-Seagate"
goto copy

:U
echo.
echo "kopiere auf Hitachi intern"
goto copy

:W
echo.
echo "kopiere auf USB-WD"
goto copy

:copy
echo.
echo "Daten nur kopieren? Einfach Return druecken"
echo "Daten 1:1 spiegeln? Loescht Dateien auf Ziel! "JA" eingeben"
set /p SPIEGELN=Antwort:

if "%SPIEGELN%" == "JA" (
  echo.
  echo "Daten werden 1:1 gespiegelt mit Loeschung im ZIEL nicht vorhandener auf Quelle"
  goto SPIEGELN
)

if "%SPIEGELN%" == "" (
  echo.
  echo "Daten werden "nur" kopiert."
  pause
  goto KOPIEREN 
)

echo.
echo "falsche Eingabe"
goto Nichts

:SPIEGELN
echo.
echo "Willst du das wirklich?"
set /p ABFRAGE=Antwort JA sonst leer lassen:
if "%ABFRAGE%" == "JA" (
  robocopy D: %Drive%: /MIR /R:3 /W:5 /XD "System Volume Information" "$RECYCLE.BIN" 
  goto Ende
)

if "%ABFRAGE%" == "" (
  goto Nichts
)

echo.
echo "falsche Eingabe"
goto Ende  

:KOPIEREN
robocopy D: %Drive%: /s /R:3 /W:5 /XD "System Volume Information" "$RECYCLE.BIN" 
goto Ende

:Nichts
echo.
echo "Es ist nicht passiert"

:Ende
echo.
echo "ENDE"
pause
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

ist es möglich die rot markierten Ausgaben zu unterdrücken?
Sodass nur die grünen Ausgaben sichtbar bleiben.
Ich weiß nicht wie.
echo off/on ist egal
REM ist egal

Batchausgabe.png

Code:
echo off
REM wmic cpu get name, systemname
REM wmic logicaldisk where drivetype=3 get name, freespace, filesystem
wmic logicaldisk get caption, volumename
echo.
echo "Laufwerksbuchstaben von WD_Elements eingeben"
set /p Drive=Laufwerk Ziel eingeben:

if "%Drive%" == "D" (goto LWD)
if "%Drive%" == "E" (goto LWE)
if "%Drive%" == "F" (goto LWF)
if "%Drive%" == "" (goto Nichts)

echo.
echo "falsche Eingabe"
goto Nichts

:LWD
echo.
echo "sichere auf Laufwerk D:"
goto BACKUP

:LWE
echo.
echo "sichere auf Laufwerk E:"
goto BACKUP

:LWF
echo.
echo "sichere auf Laufwerk F:"
goto BACKUP

echo.
echo "falsche Eingabe"
goto Nichts

:BACKUP
echo "...Backup..."
REM winrar a -agYYMMDD "%Drive%:\Backup\MS-Office Dokumente_" "C:\Users\Mutti\Documents\MS-Office Dokumente"
REM winrar a -agYYMMDD "%Drive%:\Backup\Thunderbird_" "C:\Users\Mutti\AppData\Roaming\Thunderbird"
REM winrar a -agYYMMDD "%Drive%:\Backup\Firefox_" "C:\Users\Mutti\AppData\Roaming\Mozilla\Firefox"
goto Ende

:Nichts
echo.
echo "Es ist nicht passiert"

:Ende
echo.
echo "ENDE"
pause
 
Du hast das Skript wohl als UTF-8 gespeichert, deshalb funktioniert das echo off am Anfang nicht. Speichere das mal mittels "Speichern unter" als 'ANSI'. Wenn du in die erste Zeile @ECHO OFF schreibst, wird auch der echo off Befehl nicht angezeigt.
 
Hallo,

vielen lieben Dank, dass hat geholfen. :)
Ergänzung ()

Hallo,

jetzt gibt es leider ein neues Problem.
Der Befehl Pause wird anscheinend angemeckert und danach wird die .bat Datei eigenmächtig verändert. Ist kein Witz. Mein OS ist Win10 Pro, falls das wichtig ist.

vorher:
Code:
@ echo off
REM drivetype=2 zeigt nur Wechseldatenträger an
wmic logicaldisk where drivetype=2 get deviceid, volumename
echo.
echo "Laufwerksbuchstaben von WD_Elements eingeben"
set /p Drive=Laufwerk Ziel eingeben:

if "%Drive%" == "" (goto NICHTS)

echo "Backup"
REM winrar a -agYYMMDD "%Drive%:\Backup\MS-Office Dokumente_" "C:\Users\Mutti\Documents\MS-Office Dokumente"
REM winrar a -agYYMMDD "%Drive%:\Backup\Thunderbird_" "C:\Users\Mutti\AppData\Roaming\Thunderbird"
REM winrar a -agYYMMDD "%Drive%:\Backup\Firefox_" "C:\Users\Mutti\AppData\Roaming\Mozilla\Firefox"
goto ENDE

:NICHTS
echo.
echo "Es ist nicht passiert"

:ENDE
echo.
echo "ENDE"
pause

nach Ausführung total versaut, dass muss der vorm ausführen machen, sonst wäre das Ende nicht doppelt, total konfus. Wo liegt das Problem?

Batchausgabe2.png

Code:
@ echo off
REM drivetype=2 zeigt nur Wechseldatenträger an
wmic logicaldisk where drivetype=2 get deviceid, volumename
echo.
echo "Laufwerksbuchstaben von WD_Elements eingeben"
set /p Drive=Laufwerk Ziel eingeben:

if "%Drive%" == "" (goto NICHTS)

echo "Backup"
REM winrar a -agYYMMDD "%Drive%:\Backup\MS-Office Dokumente_" "C:\Users\Mutti\Documents\MS-Office Dokumente"
REM winrar a -agYYMMDD "%Drive%:\Backup\Thunderbird_" "C:\Users\Mutti\AppData\Roaming\Thunderbird"
REM winrar a -agYYMMDD "%Drive%:\Backup\Firefox_" "C:\Users\Mutti\AppData\Roaming\Mozilla\Firefox"
goto ENDE

:NICHTS
echo.
echo "Es ist nicht passiert"

:ENDE
echo.
echo "ENDE"
pause
se




\Backup\MS-Office Dokumente_" "C:\Users\Mutti\Documents\MS-Office Dokumente"
REM winrar a -agYYMMDD "%Drive%:\Backup\Thunderbird_" "C:\Users\Mutti\AppData\Roaming\Thunderbird"
REM winrar a -agYYMMDD "%Drive%:\Backup\Firefox_" "C:\Users\Mutti\AppData\Roaming\Mozilla\Firefox"
goto Ende

:Nichts
echo.
echo "Es ist nicht passiert"

:Ende
echo.
echo "ENDE"
pause
e

Ursache war der Stick, der hatte eine Macke, direkt beim speichern wurde die Datei verfälscht. Neu formatiert, jetzt klappt alles.
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben