Batch Daten auf Laufwerk kopieren

Horst_33

Lieutenant
Registriert
Dez. 2008
Beiträge
684
Halli Hallo,

ich hab ne Frage zu nen Script von mir. Hab mir sagen lassen, dass ich gerne etwas kompliziert und unnötige Batch-Scripte schreibe, aber bisher haben sie auch (immer) geklappt.

Mal ne Kurze Beschreibung des Scriptes:

- Laufwerkbuchstabe des USB-Sticks wird abgefragt
- Mit Robocopy wird n Ordner aufn Stick Syncronisiert
- Bei Fehler wird ne Wiederholungsabfrage bzw. n Fehler + Ende eingeleutet

Hier der Code:

Code:
@echo off
@Title Standardprogramme

:start

@color b

echo # Bitte geben Sie den Laufwerksbuchstaben des UBS-Sticks an
echo #
echo #
set /P EINGABE=# [ABCDEFG] ...       

echo #
echo #

echo # = Das Ziellaufwerk ist %EINGABE%:

ping 127.0.0.1 -n 1 >nul

echo #

echo # == Starte Kopieren der Standartprogramme in %EINGABE%:\Standardprogramme

ping 127.0.0.1 -n 1 >nul

echo #

Robocopy /MIR /R:1 /W:1 "C:\Users\Peter\Downloads\Programme\Default" "%EINGABE%:\Standardprogramme" >nul

if errorlevel 1 goto failed

goto copy_ok

:failed

color c
echo # Beim Kopieren Trat ein Fehler auf!

echo #

echo # Vogang wird wiederholt!

set /P ABFRAGE=# [Y | N] ...        


IF Y=%ABFRAGE% goto retry
IF N=%ABFRAGE% goto end
echo # Ein weiterer Fehler ist aufgetreten!
echo # Programm wird in 3 Sekunden beendet!
ping 127.0.0.1 -n 3 >nul
        
goto end

:retry
cls
goto start

:copy_ok 

echo # = Standardprogramme wurden in das Verzeichniss "%EINGABE%:\Standardprogramme" kopiert
ping 127.0.0.1 -n 5 >nul

:end

Wieso funktionierts nicht?

Ich hab kA wieso genau...

Wenn ich n richtigen Laufwerksbuchstaben angebe funktionierts ohne Mucken. Wenn ich n Problemfall z.B. mit Laufwerksbuchstabe 123 test gibts massig Fehler...

1.
Code:
echo # = Das Ziellaufwerk ist %EINGABE%:
gibt nur "Das Ziellaufwerk ist :" aus... kein 123:

2. Es gibt keine Y/N Abfrage... Ende des Scriptes.
 
Bei mir geht das Skript und er gibt "Das Ziellaufwerk ist 123:" aus.
 
if errorlevel 1 goto failed

->

if not errorlevel == 0 goto failed

Aber warum es massig fehler gibt ist doch klar. Du Versucht dann deine Dateien nach 123:\ zu kopieren, das gibts nicht, robocopy meldet fehler...
Plausibilitätsabfrage vorher machen... das einfachste das zu machen wäre wohl zu prüfen ob der Pfad tatsächlich existiert:
IF NOT exist %eingabe%:\NUL (ECHO Laufwerk existiert nicht&goto start)

Ach und am Ende kommt das ja/nein nicht weil du das Pipe Symbol ( "|" ) verwendest...
 
Zuletzt bearbeitet:
Danke für die schnellen Antworten, v.a. grimes

Habe von nen Kollegen den Tipp mit CHOICE das ganze zu machen... funktioniert komplett Fehlerfrei :)

Hier mal der CODE:

Code:
:start
@echo off
@color b
@Title Standardprogramme
echo #
echo # Bitte geben Sie den Laufwerksbuchstaben des UBS-Sticks an
echo #
echo #
set /P EINGABE=# [ABCDEFG] ...       

echo #

IF NOT EXIST %EINGABE%:\NUL GOTO FAILED

echo #

echo # = Das Ziellaufwerk ist %EINGABE%:

ping 127.0.0.1 -n 1 >nul

echo #

echo # == Starte Kopieren der Standartprogramme in %EINGABE%:\Standardprogramme

ping 127.0.0.1 -n 1 >nul

echo #

Robocopy /MIR /R:1 /W:1 "C:\Users\Peter\Downloads\Programme\Default" "%EINGABE%:\Standardprogramme" >nul

goto copy_ok

:failed

color c
echo # Der Laufwerksbuchstabe existiert nicht!

echo #

CHOICE /M "Soll der Vorgang wiederholt werden?"
IF ERRORLEVEL 255 GOTO CHOICE_ER
IF ERRORLEVEL 2 GOTO end
IF ERRORLEVEL 1 GOTO retry
IF ERRORLEVEL 0 GOTO END
          
goto end

:retry
cls
goto start

:CHOICE_ER

cls
echo # Bitte beantworten Sie die Frage mit J bzw. N!
goto failed

:copy_ok 

echo # === Programme wurden in das Verzeichniss "%EINGABE%:\Standardprogramme" kopiert
ping 127.0.0.1 -n 4 >nul

:end
 
Zurück
Oben