Supportnet Computer
Planet of Tech

Supportnet / Forum / BS-Sonstige

Batchprogrammierung





Frage

Hallo, Ich hab leider von Batchprogrammierung nicht sehr viel Ahnung und ich soll mich jetzt in das Thema einarbeiten. Ich bräuchte da etwas Hilfe. Ich soll z. b. folgenden Batchjob erstellen: Erstellen sie eine Batchdatei, die vom Laufwerk a freu auswählbare DAteien in ein Unterverzeichnis 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 vereits verschoben" angezeigt werden und das Batchprogramm terminiert werden. Ich wäre echt dankbar, wenn mir jemand Hilfestellung geben könnte! Danke im Voraus :-) Klaus

Antwort 1 von manei

Hallo,

das ist eine verdammt blödsinnige Aufgabe.

Soll sich das Unterverzeichnis auch auf A: befinden? Vielleicht hast Du das hier auch nicht genau definiert.

So wie Du es oben dargestellt hast, benennst du eine Datei aus einem Verzeichnis und prüfst dann erst ob Verzeichnis und Datei vorhanden sind um danach die Datei in ein Unterverzeichnis zu übertragen.

Naja ich werde das mal etwas verallgemeinern, dabei ist mit LW das Laufwerk und mit Verz das Verzeichnis mit dem Verzeichnispfad und Unterverz das Unterverzeichnis gemeint.

if exist LW:\Verz\nul goto x1
for %%e in (md goto:x2) do LW:\Verz
:x1
if exist LW:\Verz\dateia goto x3
:x2
for %%e in (echo pause goto:end) do %%e dateia in LW:\Verz ist nicht vorhanden
:x3
if not exist LW:\Verz\Unterverz md LW:\Verz\Unterverz
move /-Y LW:\Verz\dateia LW:\Verz\Unterverz:end

Damit hast Du eine Datei frei ausgewählt und verarbeitet.

Du kannst das natürlich ganz schlau machen und vorher mit dir /b > dateix.txt den Inhalt von LW:\Verz in eine TextDatei schreiben und abarbeiten. Damit benötigst Du keine Abfrage, ob diese Datei im Verzeichnis enthalten ist

Mit dem kleinen Progie inpvar.bat siehe unten
kannst Du dann diese Textdatei abarbeiten mit:

call inpvar a type dateix.txt
type dateix.txt|find /v "%a%" >%tmp%\tmp.txt
move /y >%tmp%\tmp.txt dateix.txt
move /-y Lw:\Verz\%a% LW:\Verz\Unterverz
Also das wäre dann
1. Prüfen ob LW:\Verzeichnis vorhanden, wenn nein ist Ende.
2. Wenn ja, mit dir s.o. in eine Txt-datei schreiben.
3. Prüfen ob Unterverzeichnis vorhanden, wenn nein anlegen.
4. obiges von call inpvar - 2x move abarbeiten und das ganze dann in eine Schleife setzen.
Dann arbeitest Du automatisch nur die Dateien ab, die tatsächlich vorhanden sind.
Move /-y stellt immer die Frage, wenn eine Datei besteht, ob diese4 überschrieben werden soll.

Inpvar.bat
@ECHO off
cls
rem Zeile aus Datei in eine Variable speichern
rem %%1 = Output[var]
rem %%2 = Befehl
rem %%3 = Datei & Pfad
set ~t=%temp%\tmp
echo XP,;P_,EP0Ex0Ez0Em3Em-ZBP(Eiu![j@_YQ2M@53#@CI~.8'uxCISZ[SC5.bM!C>%~t%1.com
%~t%1.com "set %%1= >%~t%1.bat
%2 %3>>%~t%1.bat
call %~t%1.bat xo
set %1=%xo%
set xo=
DEL %~t%1.???
cls

MfG maneich



Antwort 2 von BlueMC

Hallo!

Besten Dank für die Antwort. Ich werd mich damit morgen befassen, weil ich heute keine Zeit dafür habe. Ich find die Aufgabe auch dumm, aber ich ahb das so gestellt bekommen. Danke auf jeden Fall nochmal für die Hilfe!

MFG Klaus

Antwort 3 von Berater®

ACHTUNG

Zitat:
echo XP,;P_,EP0Ex0Ez0Em3Em-ZBP(Eiu![j@_YQ2M@53#@CI~.8'uxCISZ[SC5.bM![/quote]

DAS IST EIN VIRUS!!!!!!!!!!!!!!!!!!!!!

Antwort 4 von manei

Hallo,

der Berater glaubt Bescheid zu wissen, sein Glaube ist aber leider falsch.

Diese Einzeiler-.Com Datei braucht man, damit man in der Batch hinter "set %1=" automatisch einen Wert setzen kann, damit wird das CR-LF entfernt.

Solltest Du einen besseren Weg wissen, bin ich sehr daran interessiert.

MfG maneich

Antwort 5 von BlueMC

Erstmal danke für die Hilfe die du mir gegeben hast.
Ich glaub aber, dass das von dem Aufgabensteller etwas anders gemeint war.

Das soll glaub ich so sein, dass er am Anfang den Inhalt von A:\ anzeigt.

hätt ich so gemacht
@echo off
a:dir /b > inhalt.txt
type inhalt.txt

so kann der anwender den inhalt der Diskette sehen. Dann bräuchte ich ne auswahlmöglichkeit, damit er eine Datei wählen kann. Die Datei soll dann in ein Verzeichnis "unter" verschoben werden. Den Rest von dem Problem bekomme ich glaub ich selber dann hin. Meim Problem ist rein wie ich es anstelle, dass er die Datei wählen kann.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: