marsu2
Goto Top

Pfad auslesen und in eine Textdatei mit Zusatz werfen

Hi

habe ein neues Anliegen, die einzelnen Komponenten sind eigentlich recht einfach aber ich komm nicht weiter.

Ich habe einen fest definierten Ordner der *.jpg enthält der soll nun ausgelesen werden und der absolute Pfad mit ein paar anderen Zeilen in eine Datei geschrieben werden.

Die Datei dient für eine Slideshow eines Programms, die Syntax ist immer die gleiche, ich füge mal eine Beispiel Datei an:

 
object PresentationSlideShow: TPresentationSlideShow
  SlideCollection = <
    item
      FileName = 'C:\sb\flyer\Angela 4.jpg'  
    end
    item
      FileName = 'C:\sb\flyer\Angela 5.jpg'  
    end
    item
      FileName = 'C:\sb\flyer\Angela 6.jpg'  
    end
    item
      FileName = 'C:\sb\flyer\Angela 7.jpg'  
    end
    item
      FileName = 'C:\sb\flyer\Putin 8.jpg'  
    end
    item
      FileName = 'C:\sb\flyer\Angela 9.jpg'  
    end>
  Loop = False
  FitToScreen = False
end


Es muss also zunächst der Anfang:

 
object PresentationSlideShow: TPresentationSlideShow
  SlideCollection = <
eingefügt werden
und danach um den Pfad herum für jeden EIntrag im Ordner
item
      FileName = '  
und
'  
    end>

als Schwierigkeit kommt dazu dass die Zeilensprünge natürlich wichtig sind.

gibt es einen Befehl mit dem ich den kompletten Pfad auslesen kann oder muss ich an den Dateinamen dann noch den Pfad anhängen?

Und wie bekomme ich dann die übrigen Zeilen drum herum?

Fragen über Fragen

Content-ID: 173871

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

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

bastla
bastla 28.09.2011 um 22:06:45 Uhr
Goto Top
Hallo marsu2!

Versuch es mal so:
@echo off & setlocal
set "Ordner=C:\sb\flyer"  
set "Show=C:\TEMP\Slideshow.txt"  

 >"%Show%" echo\  
>>"%Show%" echo object PresentationSlideShow: TPresentationSlideShow  
>>"%Show%" <nul set /p=  SlideCollection = ^<  
for %%i in ("%Ordner%\*.jpg") do (  
    echo\
    echo     item
    echo       FileName = '%%i'  
    <nul set /p=    end
)>>"%Show%"  
>>"%Show%" echo ^>  
>>"%Show%" echo   Loop = False  
>>"%Show%" echo   FitToScreen = False  
>>"%Show%" echo end  
Der "Trick" für das Schreiben ohne Zeilenschaltung verwendet eine (simulierte) Eingabe per "set /p" - "normal" sähe das zB so aus:
set /p Pfad=Bitte den Pfad eingeben: 
Es wird dabei der nach dem "=" angegebene Text als "Eingabeaufforderung" angezeigt, aber keine Zeilenschaltung angefügt, damit die Eingabe in der gleichen Zeile erfolgen kann.

Damit nicht auf die Eingabe gewartet werden muss, wird per Umleitung der Eingabe (mit "<nul") einfach die Eingabe von "Nichts" simuliert.

Im Batch wird diese Funktionalität eigentlich nur nach dem "end" der letzten Datei benötigt - da aber vorweg nicht bekannt ist, wann die letzte Datei erreicht ist, müssen alle Dateien in der Schleife gleich verabeitet werden; es wird daher schon die erste Zeile vor der Schleife ("SlideCollection = <") nicht mit einer Zeilenschaltung ausgegeben, sodass für jede Datei in der Schleife zunächst eine Zeilenschaltung ausgegeben werden (damit wird die nächst Zeile erreicht) und am Ende das "end" wieder so geschrieben werden kann, dass die Zeile vorerst nicht verlassen wird; nach der Schleife kann dann noch das schließende ">" angefügt werden.

Grüße
bastla
marsu2
marsu2 29.09.2011 um 11:11:30 Uhr
Goto Top
ach ne was geil,

klappt einwandfrei!!!

kann ich mich vielleicht mal mit einem Kasten Bier revanchieren?

Grüße

PS: danke für die Erklärung, so lerne ich auch noch dazu