Multi command FOR-Loop in Batchfile

10/01/2013 - 14:31 von Ralf Diekmann | Report spam
Hallo NG,

ich habe eine allgemeine Frage zu Batchfiles / der DosBox. Sollte es eine
zutreffenderen NG geben, lasst es mich bitte wissen.

Ich habe ein Verzeichnis mit Dateien vom Typ ".abc", die ich mittels
eines Programmes "CONVERT" in den Typ ".xyz" umwandeln moechte. Nach dem
Umwandeln lasse ich mir jeweils die alte und die neue Datei anzeigen, um
zu entscheiden, ob die Umwandlung erfolgreich war. Ist das der Fall,
loesche ich die alte Datei.

Soweit der Plan, leider klappt es bei mir 1. nicht mit dem Batchfile und
2. nicht mit der Abfrage, ob geloescht werden soll, oder nicht:


for /f "usebackq delims=" %f in (`dir /s /b x:\path\*.abc`) do (


Mehr? convert "%f" "%f".xyz
Mehr? dir "%f"*
Mehr? set loesch=n
Mehr? set /p loesch=Loeschen
Mehr? if /i %loesch% equ J del "%f"
Mehr? )

Das obige klappt in der DosBox und nach jedem einzelnen "CONVERT" er-
folgt eine Abfrage, aber egal, ob j/J, oder n/N, es wird nie geloescht.

Was mache ich bei der Abfrage falsch?

Das ganze in ein Batchfile zu packen, will mir auch noch nicht gelingen.
Das ich den Befehl innerhalb der Backticks in double quotes setzen muss,
habe ich schon herausgefunden, aber der Unterschied zwischen:

%VAR, %VAR% und %%VAR ist mir noch nie so recht klar gewesen, wenn mir
da also einer Nachhilfe geben kann, waere das auch spitze!

Vielen Dank sagt

Euer Ralle
 

Lesen sie die antworten

#1 Stefan Kanthak
10/01/2013 - 15:28 | Warnen spam
"Ralf Diekmann" schrieb:

Hallo NG,

ich habe eine allgemeine Frage zu Batchfiles / der DosBox.



DOSbox -> <http://www.dosbox.com/>

Sollte es eine zutreffenderen NG geben, lasst es mich bitte wissen.



Wenn Du den Kommandointerpreter von Windows NT meinst:
<news:alt.msdos.batch.nt>


Ich habe ein Verzeichnis mit Dateien vom Typ ".abc", die ich mittels
eines Programmes "CONVERT" in den Typ ".xyz" umwandeln moechte. Nach dem
Umwandeln lasse ich mir jeweils die alte und die neue Datei anzeigen, um
zu entscheiden, ob die Umwandlung erfolgreich war. Ist das der Fall,
loesche ich die alte Datei.

Soweit der Plan, leider klappt es bei mir 1. nicht mit dem Batchfile und
2. nicht mit der Abfrage, ob geloescht werden soll, oder nicht:

>for /f "usebackq delims=" %f in (`dir /s /b x:\path\*.abc`) do (



Useless use of `dir` award?

Entweder
FOR %%f IN ("x:\path\*.abc") DO ...
oder
FOR /R x:\path %%f IN (*.abc) DO ...

Mehr? convert "%f" "%f".xyz



... "%f" "%~dpnf.xyz"

Mehr? dir "%f"*



DIR "%f" "%~dpnf.xyz"

Mehr? set loesch=n
Mehr? set /p loesch=Loeschen



ECHO "%loesch%"

Mehr? if /i %loesch% equ J del "%f"



IF /I "%loesch%" == "J" ...

Mehr? )

Das obige klappt in der DosBox und nach jedem einzelnen "CONVERT" er-
folgt eine Abfrage, aber egal, ob j/J, oder n/N, es wird nie geloescht.

Was mache ich bei der Abfrage falsch?



Siehe ECHO "%loesch%"

Das ganze in ein Batchfile zu packen, will mir auch noch nicht gelingen.
Das ich den Befehl innerhalb der Backticks in double quotes setzen muss,
habe ich schon herausgefunden, aber der Unterschied zwischen:

%VAR, %VAR% und %%VAR ist mir noch nie so recht klar gewesen, wenn mir
da also einer Nachhilfe geben kann, waere das auch spitze!



%VAR% referenziert Umgebungsvariable (siehe SET /?) und unterscheidet
%var% nicht von %Var% oder %VAR%, ignoriert also die Gross/Kleinschreibung
von Variablennamen.

FOR hat seine eigenen Variablen, deren Name nur aus einem Zeichen besteht,
und unterscheidet zwischen %X und %x.
NUR diese sind in *.CMD direkt nach dem FOR als %%x zu schreiben.

Stefan
[
Die unaufgeforderte Zusendung werbender E-Mails verstoesst gegen §823
Abs. 1 sowie §1004 Abs. 1 BGB und begruendet Anspruch auf Unterlassung.
Beschluss des OLG Bamberg vom 12.05.2005 (AZ: 1 U 143/04)

Ähnliche fragen