Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch Datei zur Archivierung von Disketten

Frage Entwicklung Batch & Shell

Mitglied: gods-disciple

gods-disciple (Level 1) - Jetzt verbinden

06.03.2009, aktualisiert 22:55 Uhr, 4661 Aufrufe, 4 Kommentare

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
Mitglied: miniversum
07.03.2009 um 09:53 Uhr
Ich hab deine Batch mal etwas verändert / vereinfacht.
Schau mal ob die das so macht wie du willst:
01.
@echo off 
02.
set S=A:\ 
03.
set "Dir=R:\Backup\Disketten" 
04.
set log=Sicherung-Diskette 
05.
 
06.
rem Oeffne Verzeichnis, in dem der Zielordner erstellt werden soll. 
07.
cd /D "%Dir%" 
08.
 
09.
:anfang 
10.
echo. 
11.
echo. 
12.
echo Bitte geben Sie den Namen ein, den das zu erstellende Verzeichnis erhalten soll. 
13.
echo. 
14.
echo. 
15.
 
16.
rem Setze Variable fuer Zielordner. 
17.
set /p "fd=" 
18.
 
19.
echo. 
20.
echo. 
21.
echo Wenn Sie einen Zusatzordner nach dem Hauptverzeichnis anlegen moechten, 
22.
echo geben Sie bitte den Namen des Ordners jetzt an. 
23.
echo. 
24.
echo Wenn Sie keinen weiteren Ordner hinzufuegen moechten, 
25.
echo druecken Sie bitte einfach Enter. 
26.
echo. 
27.
 
28.
rem Setze Ordner in dem der Zielordner abgespeichert werden soll. 
29.
set /p "f3=" 
30.
 
31.
rem Teste, ob mein zu erstellender Ordner schon besteht. 
32.
if not exist %Dir%\%f3%\%fd% goto:erzeugen 
33.
 
34.
echo. 
35.
echo. 
36.
echo Das zu erstellende Verzeichnis besteht bereits, 
37.
echo bitte geben Sie einen neuen Namen ein. 
38.
echo. 
39.
goto:anfang 
40.
 
41.
:erzeugen 
42.
 
43.
rem Erzeuge Ordner, oeffne Ordner, erzeuge Zielordner. 
44.
md %Dir%\%f3%\%fd% 
45.
 
46.
echo. 
47.
echo. 
48.
echo Bitte legen Sie die Diskette nun in das Laufwerk ein. 
49.
echo. 
50.
echo Mit druecken einer Taste wird der Inhalt der Diskette nach 
51.
echo %Dir%\%f3%\%fd% kopiert 
52.
Pause 
53.
 
54.
rem Kopiere Diskette in Zielordner mit Logdatei 
55.
robocopy %S% %Dir%\%fd% /E /COPY:DT /R:5 /W:1 /LOG:%Dir%\%f3%\%fd%\%log%.txt /NFL /NDL 
56.
 
57.
echo Bitte druecken Sie eine Taste 
58.
pause 
59.
 
60.
echo. 
61.
echo. 
62.
echo Der Kopiervorgang wurde erfolgreich abgeschlossen. 
63.
echo. 
64.
echo. 
65.
echo Mit druecken einer Taste wird der naechste Kopiervorgang gestartet. 
66.
echo Zuerst wird dem Laufwerk ein Name vergeben, 
67.
echo Sie muessen die Diskette also noch nicht einlegen. 
68.
echo. 
69.
echo. 
70.
echo Wenn Sie den Vorgang hier abbrechen moechten druecken Sie "CTRL" ("STRG") + "C" 
71.
echo und bestaetigen Sie mit "S" ("J"). 
72.
pause 
73.
goto:anfang
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.
Bitte warten ..
Mitglied: gods-disciple
07.03.2009 um 17:30 Uhr
Hey. vielen Dank schonmal für deine Hilfe.
Ich habe die getestet und sie funktioniert leider auch noch nicht so richtig. Der Test, ob die Ordner bestehen, geht nicht mehr, aber selbst wenn ich das rausnehme, schafft er es nicht das Zielverzeichnis bei robocopy zu verarbeiten. Er nimmt immer nur den Anfang von dem Ordnernamen mit Leerzeichen.
Ich denke das Problem ist einfach, dass robocopy mit Ordnernamen mit Leerzeichen nicht klar kommt. Hat jemand eine Ahnung, wie ich ihm sagen, kann, wo er es hinkopieren soll, wenn der Ordner Leerzeichen hat.
Vielen Dank
Liebe Grüsse
God's disciple
Bitte warten ..
Mitglied: miniversum
07.03.2009 um 18:05 Uhr
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
01.
if not exist "%Dir%\%f3%\%fd%" goto:erzeugen
, Zeile 44 in
01.
md "%Dir%\%f3%\%fd%"
und Zeile 55 in
01.
robocopy %S% "%Dir%\%fd%" /E /COPY:DT /R:5 /W:1 /LOG:"%Dir%\%f3%\%fd%\%log%.txt" /NFL /NDL

Dan sollte es eigentlich gehen.
Bitte warten ..
Mitglied: gods-disciple
08.03.2009 um 21:25 Uhr
Hola,
vielen Dank, jetzt läuft es sehr gut . Ich hab immer versucht jeden einzelnen Ordner in Anführungszeichen zu setzen, das hat nicht funktioniert, aber so läuft es jetzt.
Meine Annahme stimmt auch nicht ganz mit dem Enter wird die alte Variable bei behalten... hab jetzt noch eine Zeile zugefügt, dass wenn man Ja eingibt, dass er die Variable wieder löscht... jetzt macht er alles was ich will .
Vielen Dank für deine Hilfe
God´s disciple
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Ä in batch Datei (12)

Frage von BergEnte zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...

Peripheriegeräte
Wlan stört Funkmaus (11)

Frage von Falaffel zum Thema Peripheriegeräte ...

Peripheriegeräte
gelöst USB Festplatte verliert Laufwerksbuchstabe (9)

Frage von cese4321 zum Thema Peripheriegeräte ...