Batch Datei zur Archivierung von Disketten
Ich möchte mir den Arbeitsablauf des Archivieren alter Disketten möglichst einfach gestalten, um nebenher andere Sachen machen zu können... also habe ich mich zum ersten Mal mit dem Thema Batch beschäftigt und auch ganz stolz meine erste eigene Batchdatei geschrieben.
Also mein Ziel der Batchdatei ist, dass ich nur eine Diskette einlegen muss, dann den Ordnernamen eingebe und die Diskette an den Ort, wo ich sie haben möchte, kopiert wird. Und das ganze dann bitte als Dauerschleife.
Für diesen Vorgang habe ich mir eine Batchdatei geschrieben, die auch funktioniert.
Nur habe ich diese (als fauler Mensch) noch verbessern wollen und so mehrfach umgeschrieben, mit dem Ziel, dass ich noch einen weiteren Ordner angeben kann.
Um die Situation zu verstehen... oft hat man ja Disketten die zusammen gehören. Deswegen würde ich am liebsten einen Ordner (in der Batch "f3") erstellen, in den alle zusammengehörigen Disketten kopiert werden, aber jeweils halt noch in ihren eigenen Unterordner (in der Batch "fd").
Unten meine Batch zur Fehlersuche... es liegt daran, das Robocopy den Pfad nicht richtig auflöst im log wie im Zielverzeichnis, doch trotz vielen Versuchen mit verschiedenen Slash- oder Anführungszeichen-konstelationen bin ich nicht zum Ergebnis gekommen.
Da es meine erste Batch ist, kann es sein, dass auch noch einige Anfängerfehler oder Umständlichkeiten drin sind, bitte gerne freundlich korrigieren, will ja was lernen
.
Batch:
@echo off
set S=A:\
set Dir=R:\
set f1=Backup
set f2=Disketten
set log=Sicherung-Diskette
rem Oeffne Verzeichnis, in dem der Zielordner erstellt werden soll.
cd %Dir%%f1%\%f2%
goto anfang
:anfang
echo.
echo.
echo Bitte geben Sie den Namen ein, den das zu erstellende Verzeichnis erhalten soll.
echo.
echo Wenn der Name aus mehreren Woertern bestehen soll,
echo geben Sie den Namen bitte in Anfuehrungszeichen an.
echo.
rem Setze Variable fuer Zielordner.
set /p fd=
echo.
echo.
echo Wenn Sie einen Zusatzordner nach dem Hauptverzeichnis anlegen moechten,
echo geben Sie bitte den Namen des Ordners jetzt an.
echo.
echo Wenn der Name aus mehreren Woertern bestehen soll,
echo geben Sie den Namen bitte in Anfuehrungszeichen an.
echo.
echo Wenn Sie keinen weiteren Ordner hinzufuegen moechten,
echo druecken Sie bitte einfach Enter.
echo.
rem Setze Ordner in dem der Zielordner abgespeichert werden soll.
set /p f3=
goto test
:test
rem Teste, ob mein zu erstellender Ordner schon besteht.
if exist %Dir%%f1%\%f2%\%f3%\%fd% goto aendern
goto erzeugen
:aendern
echo.
echo.
echo Das zu erstellende Verzeichnis besteht bereits,
echo bitte geben Sie einen neuen Namen ein.
echo.
rem Setze Variable fuer Zielordner, da der vorher gewaehlte schon besteht.
set /p fd=
goto test
:erzeugen
rem Erzeuge Ordner, oeffne Ordner, erzeuge Zielordner.
md %f3%
cd %Dir%%f1%\%f2%\%f3%
md %fd%
goto kopieren
:kopieren
echo.
echo.
echo Bitte legen Sie die Diskette nun in das Laufwerk ein.
echo.
echo Mit druecken einer Taste wird der Inhalt der Diskette nach
echo %Dir%%f1%\%f2%\%f3%\%fd% kopiert
Pause
rem Kopiere Diskette in Zielordner mit Logdatei
robocopy %S% %Dir%%f1%\%f2%\%f3%\%fd% /E /COPY:DT /R:5 /W:1 /LOG:%Dir%%f1%\%f2%\%f3%\%fd%\%log%.txt /NFL /NDL
goto ende
:ende-k
echo Bitte druecken Sie eine Taste
pause
goto ende
:ende
echo.
echo.
echo Der Kopiervorgang wurde erfolgreich abgeschlossen.
echo.
echo.
echo Mit druecken einer Taste wird der naechste Kopiervorgang gestartet.
echo Zuerst wird dem Laufwerk ein Name vergeben,
echo Sie muessen die Diskette also noch nicht einlegen.
echo.
echo.
echo Wenn Sie den Vorgang hier abbrechen moechten druecken Sie "CTRL" ("STRG") + "C"
echo und bestaetigen Sie mit "S" ("J").
pause
goto anfang
Noch 2 Anmerkungen:
In den echo-sachen:
CTRL und S liegen daran, dass ich in Peru arbeite.
Die Angabe oben, dass wenn kein f3 erstellt werden soll, dass einfach Enter gedrückt werden soll, ist eine Annahme, da meine Batch ja nicht funktioniert, konnte ich es nicht testen. Was ich will ist, dass ich, falls ich eine Diskette archivieren muss, die alleine steht und in keinen Ordner mit anderen Disketten gesteckt werden soll, diese Funktion auch weg lassen kann. Ob dies funktioniert, indem einfach die Variable nicht gesetzt wird weiss ich nicht. Wenn ihr dafür Ideen habt, immer raus damit.
Ich hoffe das war nicht zu kompliziert erklärt.
Liebe Grüsse und Vielen Dank
God`s disciple
Also mein Ziel der Batchdatei ist, dass ich nur eine Diskette einlegen muss, dann den Ordnernamen eingebe und die Diskette an den Ort, wo ich sie haben möchte, kopiert wird. Und das ganze dann bitte als Dauerschleife.
Für diesen Vorgang habe ich mir eine Batchdatei geschrieben, die auch funktioniert.
Nur habe ich diese (als fauler Mensch) noch verbessern wollen und so mehrfach umgeschrieben, mit dem Ziel, dass ich noch einen weiteren Ordner angeben kann.
Um die Situation zu verstehen... oft hat man ja Disketten die zusammen gehören. Deswegen würde ich am liebsten einen Ordner (in der Batch "f3") erstellen, in den alle zusammengehörigen Disketten kopiert werden, aber jeweils halt noch in ihren eigenen Unterordner (in der Batch "fd").
Unten meine Batch zur Fehlersuche... es liegt daran, das Robocopy den Pfad nicht richtig auflöst im log wie im Zielverzeichnis, doch trotz vielen Versuchen mit verschiedenen Slash- oder Anführungszeichen-konstelationen bin ich nicht zum Ergebnis gekommen.
Da es meine erste Batch ist, kann es sein, dass auch noch einige Anfängerfehler oder Umständlichkeiten drin sind, bitte gerne freundlich korrigieren, will ja was lernen
Batch:
@echo off
set S=A:\
set Dir=R:\
set f1=Backup
set f2=Disketten
set log=Sicherung-Diskette
rem Oeffne Verzeichnis, in dem der Zielordner erstellt werden soll.
cd %Dir%%f1%\%f2%
goto anfang
:anfang
echo.
echo.
echo Bitte geben Sie den Namen ein, den das zu erstellende Verzeichnis erhalten soll.
echo.
echo Wenn der Name aus mehreren Woertern bestehen soll,
echo geben Sie den Namen bitte in Anfuehrungszeichen an.
echo.
rem Setze Variable fuer Zielordner.
set /p fd=
echo.
echo.
echo Wenn Sie einen Zusatzordner nach dem Hauptverzeichnis anlegen moechten,
echo geben Sie bitte den Namen des Ordners jetzt an.
echo.
echo Wenn der Name aus mehreren Woertern bestehen soll,
echo geben Sie den Namen bitte in Anfuehrungszeichen an.
echo.
echo Wenn Sie keinen weiteren Ordner hinzufuegen moechten,
echo druecken Sie bitte einfach Enter.
echo.
rem Setze Ordner in dem der Zielordner abgespeichert werden soll.
set /p f3=
goto test
:test
rem Teste, ob mein zu erstellender Ordner schon besteht.
if exist %Dir%%f1%\%f2%\%f3%\%fd% goto aendern
goto erzeugen
:aendern
echo.
echo.
echo Das zu erstellende Verzeichnis besteht bereits,
echo bitte geben Sie einen neuen Namen ein.
echo.
rem Setze Variable fuer Zielordner, da der vorher gewaehlte schon besteht.
set /p fd=
goto test
:erzeugen
rem Erzeuge Ordner, oeffne Ordner, erzeuge Zielordner.
md %f3%
cd %Dir%%f1%\%f2%\%f3%
md %fd%
goto kopieren
:kopieren
echo.
echo.
echo Bitte legen Sie die Diskette nun in das Laufwerk ein.
echo.
echo Mit druecken einer Taste wird der Inhalt der Diskette nach
echo %Dir%%f1%\%f2%\%f3%\%fd% kopiert
Pause
rem Kopiere Diskette in Zielordner mit Logdatei
robocopy %S% %Dir%%f1%\%f2%\%f3%\%fd% /E /COPY:DT /R:5 /W:1 /LOG:%Dir%%f1%\%f2%\%f3%\%fd%\%log%.txt /NFL /NDL
goto ende
:ende-k
echo Bitte druecken Sie eine Taste
pause
goto ende
:ende
echo.
echo.
echo Der Kopiervorgang wurde erfolgreich abgeschlossen.
echo.
echo.
echo Mit druecken einer Taste wird der naechste Kopiervorgang gestartet.
echo Zuerst wird dem Laufwerk ein Name vergeben,
echo Sie muessen die Diskette also noch nicht einlegen.
echo.
echo.
echo Wenn Sie den Vorgang hier abbrechen moechten druecken Sie "CTRL" ("STRG") + "C"
echo und bestaetigen Sie mit "S" ("J").
pause
goto anfang
Noch 2 Anmerkungen:
In den echo-sachen:
CTRL und S liegen daran, dass ich in Peru arbeite.
Die Angabe oben, dass wenn kein f3 erstellt werden soll, dass einfach Enter gedrückt werden soll, ist eine Annahme, da meine Batch ja nicht funktioniert, konnte ich es nicht testen. Was ich will ist, dass ich, falls ich eine Diskette archivieren muss, die alleine steht und in keinen Ordner mit anderen Disketten gesteckt werden soll, diese Funktion auch weg lassen kann. Ob dies funktioniert, indem einfach die Variable nicht gesetzt wird weiss ich nicht. Wenn ihr dafür Ideen habt, immer raus damit.
Ich hoffe das war nicht zu kompliziert erklärt.
Liebe Grüsse und Vielen Dank
God`s disciple
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 110757
Url: https://administrator.de/forum/batch-datei-zur-archivierung-von-disketten-110757.html
Ausgedruckt am: 15.05.2025 um 20:05 Uhr
4 Kommentare
Neuester Kommentar
Ich hab deine Batch mal etwas verändert / vereinfacht.
Schau mal ob die das so macht wie du willst:
Der Code ist von mir nicht getestet.
Bei Leerstelle den Namen in Anführungszeichen setzen ist nicht nötig jetzt, Da das sowieso immer gemacht wird jetzt.
Ich habe einige Sprungmarken entfernt die nicht notwendig waren.
Das ganze ist ungetestet.
Das mit dem einfachen weglassen von f3, bzw. nichts dafür angeben könnte funktionieren. Wenn nicht wäre eine Abfrage ob f3 leer ist möglich.
Da die Kombination "%Dir%%f1%\%f2%" immer vorkam habe ich sie zusammen in die Variable %Dir% gezogen.
Wenn du so etwas testen willst ändere einfach das "@echo off" in "@echo on² um oder lasse es erstmal weg. Dann kannst du sehen was pasiert, welche inhalte die ariabeln haben und wo es hängt. Funktioniert alles wi ees soll dan einfach wieder "@echo off" und gut ist.
Schau mal ob die das so macht wie du willst:
@echo off
set S=A:\
set "Dir=R:\Backup\Disketten"
set log=Sicherung-Diskette
rem Oeffne Verzeichnis, in dem der Zielordner erstellt werden soll.
cd /D "%Dir%"
:anfang
echo.
echo.
echo Bitte geben Sie den Namen ein, den das zu erstellende Verzeichnis erhalten soll.
echo.
echo.
rem Setze Variable fuer Zielordner.
set /p "fd="
echo.
echo.
echo Wenn Sie einen Zusatzordner nach dem Hauptverzeichnis anlegen moechten,
echo geben Sie bitte den Namen des Ordners jetzt an.
echo.
echo Wenn Sie keinen weiteren Ordner hinzufuegen moechten,
echo druecken Sie bitte einfach Enter.
echo.
rem Setze Ordner in dem der Zielordner abgespeichert werden soll.
set /p "f3="
rem Teste, ob mein zu erstellender Ordner schon besteht.
if not exist %Dir%\%f3%\%fd% goto:erzeugen
echo.
echo.
echo Das zu erstellende Verzeichnis besteht bereits,
echo bitte geben Sie einen neuen Namen ein.
echo.
goto:anfang
:erzeugen
rem Erzeuge Ordner, oeffne Ordner, erzeuge Zielordner.
md %Dir%\%f3%\%fd%
echo.
echo.
echo Bitte legen Sie die Diskette nun in das Laufwerk ein.
echo.
echo Mit druecken einer Taste wird der Inhalt der Diskette nach
echo %Dir%\%f3%\%fd% kopiert
Pause
rem Kopiere Diskette in Zielordner mit Logdatei
robocopy %S% %Dir%\%fd% /E /COPY:DT /R:5 /W:1 /LOG:%Dir%\%f3%\%fd%\%log%.txt /NFL /NDL
echo Bitte druecken Sie eine Taste
pause
echo.
echo.
echo Der Kopiervorgang wurde erfolgreich abgeschlossen.
echo.
echo.
echo Mit druecken einer Taste wird der naechste Kopiervorgang gestartet.
echo Zuerst wird dem Laufwerk ein Name vergeben,
echo Sie muessen die Diskette also noch nicht einlegen.
echo.
echo.
echo Wenn Sie den Vorgang hier abbrechen moechten druecken Sie "CTRL" ("STRG") + "C"
echo und bestaetigen Sie mit "S" ("J").
pause
goto:anfang
Bei Leerstelle den Namen in Anführungszeichen setzen ist nicht nötig jetzt, Da das sowieso immer gemacht wird jetzt.
Ich habe einige Sprungmarken entfernt die nicht notwendig waren.
Das ganze ist ungetestet.
Das mit dem einfachen weglassen von f3, bzw. nichts dafür angeben könnte funktionieren. Wenn nicht wäre eine Abfrage ob f3 leer ist möglich.
Da die Kombination "%Dir%%f1%\%f2%" immer vorkam habe ich sie zusammen in die Variable %Dir% gezogen.
Wenn du so etwas testen willst ändere einfach das "@echo off" in "@echo on² um oder lasse es erstmal weg. Dann kannst du sehen was pasiert, welche inhalte die ariabeln haben und wo es hängt. Funktioniert alles wi ees soll dan einfach wieder "@echo off" und gut ist.
Die Prüfung ob ein ordner schon existiert udn das kopieren war ieen nachlässigkeit von mir.
Du must an diesen stellen eindach die Pfadangaben in Anführungszeichen setzen. dan klapt es auch mit den Leerstellen. Bei ienem ordner ohne Leerstellen machen diese zusätzlichen Anführungszeichen nichts. Schadet also nicht.
Daher:
Ändere Zeile 32 in
, Zeile 44 in
und Zeile 55 in
Dan sollte es eigentlich gehen.
Du must an diesen stellen eindach die Pfadangaben in Anführungszeichen setzen. dan klapt es auch mit den Leerstellen. Bei ienem ordner ohne Leerstellen machen diese zusätzlichen Anführungszeichen nichts. Schadet also nicht.
Daher:
Ändere Zeile 32 in
if not exist "%Dir%\%f3%\%fd%" goto:erzeugen
md "%Dir%\%f3%\%fd%"
robocopy %S% "%Dir%\%fd%" /E /COPY:DT /R:5 /W:1 /LOG:"%Dir%\%f3%\%fd%\%log%.txt" /NFL /NDL
Dan sollte es eigentlich gehen.