Anzeige

Am Puls von Microsoft

Anzeige

Hilfe bei einem Schulprojekt über BATCH (.bat)

talmo

Herzlich willkommen
Hallo liebe Dr. Windows Mitglieder,
Ich habe mehrere Aufgaben für ein Projekt zu erledigen, jedoch komme ich bei manchen nicht weiter und weiß nicht mal wie ich anfangen sollte. Könnte mir jemand mit dieser Aufgabe behilflich sein ?
Ich weiß leider nicht mal wo ich ansetzen sollte :/
Wir sollen das mit einer .bat (batch) Datei "programmieren".

Die Aufgabe
Erstellen Sie eine Batchdatei, die vom Laufwerk "A" frei auswählbare Dateien in ein Unterverzeichnis
unter verschiebt. Vor dem Verschiebevorgang soll geprüft werden. ob das Unterverzeichnis und die
angegebene Datei existiert . ist das Unterverzeichnis nicht vorhanden, muss es vor dem
Verschiebevorgang angelegt werden. Ist die Datei nicht vorhanden soll eine Meldung "Datei ist im
Quellverzeichnis nicht vorhanden" angezeigt werden. Ferner muss vor der Verschiebung der Datei
eine Abfrage stattfinden. ob eine bereits im Verzeichnis unter existierende Datei überschrieben

werden soll. Ist eine Datei bereits im Verzeichnis unter vorhanden. muss eine Meldung

“Verschiebung erfolgreich bzw. Datei ist bereits verschoben“ angezeigt werden und das Batch-
Programm terminiert werden.

Ich wäre sehr froh wenn mir jemand ein Paar Tipps geben könnte wie ich diese Aufgabe lösen könnte :)
Mit freundlichen Grüßen
Talmo
 
Anzeige
Hallo talmo,
ich bin mir nicht sicher ob es hier gern gesehen wird, dass man bei solchen Projekten hilft. Was ich Dir aber raten kann ist, dass Du in der Eingabeaufforderung mal folgende Befehle eingibst:
Code:
ECHO /?
IF /?
FOR /?
MKDIR /?
MOVE /?
EXIT /?
 
Zuletzt bearbeitet:
Hallo talmo,

im Ernst, Batch?! Warum nicht gleich Keilschrift? :D Wieviel Zeit hast Du dafür? Und wieviel Hilfe darfst Du dir holen? Wirft der Lehrer Euch wirklich derart ins kalte Wasser? Programmieren lernt man nicht übers Wochenende...

Batch ist eine automatisierbare Variante der Eingabeaufforderung (Start, Ausführen, cmd, Enter). An dieser Kommandozeile gibst Du Befehl für Befehl ein, dann macht das Betriebssystem, was Du von ihm verlangst (naja, fast. Kaffee kochen geht auch mit korrekter Syntax nicht). Die Befehle kann man vorher in ein Textfile schreiben und dann werden sie Zeile für Zeile abgearbeitet. Dieses Textfile nennt man Batch, die Dateiendung ist .bat

Ein Batch kann also Verzeichnisse erzeugen, Dateien verschieben usw. Aber es bietet viel mehr Möglichkeiten als die Kommandozeile, z.B. wenn-dann-Abfragen oder Sprünge innerhalb der Datei (goto). So können Bedingungen für die Ausführung von Befehlen abgefragt werden - also genau das, was Du brauchst.

Wenn Du komplett bei Null anfangen musst, solltest Du dir echte Hilfe besorgen, also jemanden, der mit Dir die Grundbegriffe übt. Seit ich nicht mehr täglich damit arbeite, habe ich viel vergessen, für mich ist darum diese Website eine gute Gedächtnisstütze:

https://de.wikibooks.org/wiki/Batch-Programmierung:_Batch-Befehle

Als Editor empfehle ich Dir "Notepad++", mit der Einstellung "MS-DOS Batch". Dabei werden Umlaute korrekt übersetzt (Problem der unterschiedlichen Zeichensätze von Windows und DOS) und es moniert auch Syntaxfehler.

Viel Glück!
Gruss, Zappelin
 
Vielen Dank für die Antworten.
Irgendwie habe ich es geschafft die Aufgabe zu lösen. Jedoch weiß ich nicht ob diese richtig umgesetzt habe.
Der Lehrer hat eine komische Art uns was beizubringen. Aber da muss ich wohl durch :)

@echo off
:start
cls
echo Diese Dateien Befinden sich in diesem Ordner
echo.
dir *.* /b
echo.
echo Schreiben Sie den Namen der gewoenschten Datei in die untere Zeile.
set /p datei=Name der Datei:
if exist %datei% Goto unter
cls
Echo Die Datei %datei% ist nicht vorhanden !
Echo Sie werden zum Anfang zurueck gekehrt
pause
goto start
:unter
cls
if exist unter Goto Vorhanden
echo Der Ordner "Unter" ist nicht vorhanden !
echo Unter Wird erstellt
pause
mkdir Unter
cls
goto Start
:Vorhanden
cls
Echo Die Datei %datei% ist vorhanden.
Echo Wollen sie diese nun Verschieben ?
pause
if not exist "unter\%datei%" Goto KK
cls
Echo Die Datei %datei% ist bereits in "unter" vorhanden.
Echo Sie werden zum Anfang zurueck gekehrt
pause
goto start
:KK
Cls
Move %datei% unter
Echo Die Datei %datei% wurde erfolgreich Verschoben.
pause

Gibt es was zu verbessern ? eigentlich macht es was es machen sollte. Probiert es bei euch selber aus.

MfG
Talmo
 
Hallo Talmo,

ein Fehler ist mir sofort ins Auge gesprungen: Sprungmarken sollten nur acht Zeichen lang sein bzw. müssen sich innerhalb der ersten acht Zeichen voneinander unterscheiden. Immerhin gelten im Batch die Restriktionen von DOS; die korrekte Anzeige von langen Dateinamen in der Kommandozeile beruht nur auf vFAT-Spielerei, davon sollte man sich nicht verführen lassen.

Beispiel: Hier werden jeweils die falschen Sprungmarken angesprungen:

...
goto vorhanden2
...
:vorhanden1
...
goto vorhanden1
...
:vorhanden2
...

(... sind beliebige Befehle, es geht nur ums Prinzip. Funktionieren würde: 1vorhanden, 2vorhanden.)

Gut, es hat auf Dein Programm keinen Einfluss, aber wenn der Lehrer so vernarrt in Batch ist, das er sich einfach nicht davon trennen mag und auch noch Spätgeborene damit foltert, dann wird er das bemängeln...

Augenscheinlich funktioniert Dein Batch. Du solltest vielleicht nochmal die Rechtschreibung der ausgegebenen Texte kontrollieren. Und zur Übersichtlichkeit ein paar Leerzeilen einfügen, vorzugsweise vor jeder Sprungmarke.

Ich habe mir seinerzeit angewöhnt, den gesamten Code in Grossbuchstaben zu schreiben, die Texte aber normal, das sorgt bei grösseren Batches für Übersichtlichkeit. Ist aber mein Stil, will ich niemandem aufschwatzen.

Viel Erfolg!
Gruss, Zappelin
 
Hängt vermutlich vom Stil des Lehrers ab, aber ich finde Zappelins Anregungen zur Gross- und Kleinschreibung gut. Ist uebersichtlich und vermeidet Fehler... gewoenschten sollte wohl gewuenschten sein?
(inhaltlich habe ich keine Ahnung, nur Interesse)
 
Anzeige
Oben