dipps
Goto Top

Wo ist mein fehler

Wo ist mein Fehler???

Hallo ich habe eine Batchdatei die fehlende Bilder mit einem NO-Bild erstellen soll.

echo >bild.cmd
setlocal enabledelayedexpansion
for /L %%i in (1,1,999) do (
echo %%i >>bild.cmd 
if /I %%i LSS 100 ( 
if /I %%i LSS 10 ( 
if NOT exist 'z:\Beurteilung\Bild00%%i.bmp' (   
echo copy z:\Beurteilung\no.bmp z:\Beurteilung\Bild00%%i.bmp >> bild.cmd 
) 
)else(   
if NOT exist 'z:\Beurteilung\Bild0%%i.bmp'(     
echo copy z:\Beurteilung\no.bmp z:\Beurteilung\Bild0%%i.bmp >> bild.cmd 
) 
) 
)else( 
if NOT exist 'z:\Beurteilung\Bild%%i.bmp' (   
echo copy z:\Beurteilung\no.bmp z:\Beurteilung\Bild%%i.bmp >> bild.cmd 
) 
) 
)
Pause
Er rattert kurz durch und in der bild.cmd steht nur
ECHO ist eingeschaltet (on).
ob wohl er mir Bild002.bmp Bild005.bmp und soweiter als copy befhl schreiben müsste.

Content-Key: 174651

Url: https://administrator.de/contentid/174651

Ausgedruckt am: 28.03.2024 um 15:03 Uhr

Mitglied: Friemler
Friemler 13.10.2011 um 17:26:55 Uhr
Goto Top
Hallo Dipps,

dein Fehler liegt darin, beim if exist-Befehl den Dateinamen in Apostrophe einzuschließen statt in Anführungszeichen. Das ganze ließe sich aber sowieso folgendermaßen eindampfen (ist dann sogar etwas schneller):
@echo off & setlocal

type NUL > "Bild.cmd"  

for /l %%i in (1, 1, 999) do (
  call :ProcessFile %%i
)

exit /b


:ProcessFile
  set "Num=00%1"  
  set "Num=%Num:~-3%"  

  if not exist "Z:\Beurteilung\Bild%Num%.bmp" (  
    >>"Bild.cmd" echo copy "Z:\Beurteilung\No.bmp" "Z:\Beurteilung\Bild%Num%.bmp"  
  )
exit /b

Da du eine Batchdatei schreiben willst, wären die ganzen Bildnummern, die durch Zeile 4 in Deinem Code dort hinein geschrieben würden, sowieso kontraproduktiv. Deshalb wird das bei obigem Code nicht gemacht.

Gruß
Friemler
Mitglied: Dipps
Dipps 13.10.2011 um 17:42:23 Uhr
Goto Top
Vielen Dank für deine Hilfe.
Hast mir dadurch 254 Einträge erspart die ich hätte suchen müssen ;)

Danke für die schnelle hilfe.