Text (Code) vervielfältigen

Tante Emma

Grand Admiral Special
Mitglied seit
25.05.2006
Beiträge
3.568
Renomée
143
Standort
Berlin-Hellersdorf
  • Spinhenge ESL
Für eine Bildergallerie (xml) habe ich folgende Codezeile

<item source="001.jpg" thumb="TN_001.jpg" description="Arbeiten von Tattoo Friede"/>

Das ist eine Zeile für ein Bild.
Ich will aber 574 Bilder in die Gallerie einbinden

Ich müsste jetzt 574 Zeilen anlegen und editieren.

Gehts irgendwie auch automatisiert?
 
Mit ner Batch Datei würde das rel. einfach gehen:

Code:
@echo off

for /L %%k IN (1 1 574) DO echo ^<item source^=^"%%k.jpg^" thumb^=^"TN_%%k.jpg^" description^=^"Arbeiten von Tattoo Friede^"^/^> >> Datei.txt 

pause

So als Idee.
Kann man noch verfeinern, aber wenn es ne einmalige Sache ist würde das reichen.
Nur der Hinweis: die Zeilen werden immer angehängt. Also wenn du es 2 mal laufen lässt, dann hast du auch über 1000 Zeilen drin ;)
In der ersten Klammer (1 1 574) steht das Verhalten der Schleife. Sie fängt bei 1 an, zählt um 1 hoch und läuft 574 Mal.

edit:
Kleiner Fehler korrigiert.

Hinweis 2.
Wenn du Sonderzeichen schreiben willst muss ein ^ davor also z.B. ^<item source und nicht nur <item source.
 
Zuletzt bearbeitet:
Wenn du nur hochzählen willst geht das z.B. über die Unix-Shell recht einfach.
Code:
for i in `seq 1 574`; do printf "<item source=\"%03d.jpg\" thumb=\"TN_%03d.jpg\" description=\"Arbeiten von Tattoo Friede\"/>\n" $i $i; done
Gruß,
Max

EDIT: Zu langsam :(
 
Ich glaube aber er hat kein Unix System ;)
Aber das Prinzip bleibt das Gleiche.

Was noch fehlt wären die führenden Nullen.
Da müsste man nochmal gucken wie/ob das mit ner Batch geht. Bin mir gerade nicht sicher.
.
EDIT :
.

So geht doch ganz einfach:

Code:
@echo off & setlocal enabledelayedexpansion 

del Datei.txt 

for /L %%k in ( 1, 1, 574) do ( 

set "LAUFN=00%%k" 
set "LAUFN=!LAUFN:~-3!" 

echo ^<item source^=^"!LAUFN!.jpg^" thumb^=^"TN_!LAUFN!.jpg^" description^=^"Arbeiten von Tattoo Friede^"^/^> >> Datei.txt 
)
endlocal

pause

;D

Damit wird nur auch die Datei vorher gelöscht wenn sie da ist. Wenn nicht wird noch ein Fehler rausgeschmissen, aber das ist ja erst mal Latte :)
.
EDIT :
.

Und bevor einer meckert:

Code:
@echo off & setlocal enabledelayedexpansion 

IF EXIST Datei.txt del Datei.txt 

for /L %%k in ( 1, 1, 12 ) do ( 

set "LAUFN=00%%k" 
set "LAUFN=!LAUFN:~-3!" 

echo ^<item source^=^"!LAUFN!.jpg^" thumb^=^"TN_!LAUFN!.jpg^" description^=^"Arbeiten von Tattoo Friede^"^/^> >> Datei.txt 
)
endlocal

pause

So jetzt hab ich keine Lust mehr 8)
 
Zuletzt bearbeitet:
Vielen Dank. Hat perfekt funktioniert.
Prima! die cmd werde ich mir mal aufheben, kann man sicher mal wieder gebrauchen.
.
EDIT :
.

Ich glaube aber er hat kein Unix System ;)
Aber das Prinzip bleibt das Gleiche.

Was noch fehlt wären die führenden Nullen.
Da müsste man nochmal gucken wie/ob das mit ner Batch geht. Bin mir gerade nicht sicher.
.
EDIT :
.

So geht doch ganz einfach:

Code:
@echo off & setlocal enabledelayedexpansion 

del Datei.txt 

for /L %%k in ( 1, 1, 574) do ( 

set "LAUFN=00%%k" 
set "LAUFN=!LAUFN:~-3!" 

echo ^<item source^=^"!LAUFN!.jpg^" thumb^=^"TN_!LAUFN!.jpg^" description^=^"Arbeiten von Tattoo Friede^"^/^> >> Datei.txt 
)
endlocal

pause

;D

Damit wird nur auch die Datei vorher gelöscht wenn sie da ist. Wenn nicht wird noch ein Fehler rausgeschmissen, aber das ist ja erst mal Latte :)
.
EDIT :
.

Und bevor einer meckert:

Code:
@echo off & setlocal enabledelayedexpansion 

IF EXIST Datei.txt del Datei.txt 

for /L %%k in ( 1, 1, 12 ) do ( 

set "LAUFN=00%%k" 
set "LAUFN=!LAUFN:~-3!" 

echo ^<item source^=^"!LAUFN!.jpg^" thumb^=^"TN_!LAUFN!.jpg^" description^=^"Arbeiten von Tattoo Friede^"^/^> >> Datei.txt 
)
endlocal

pause

So jetzt hab ich keine Lust mehr 8)


Wollte dich bewerten, aber geht leider nicht.
Fehlermeldung: "Du musst erst einige Beiträge anderer Benutzer bewertet haben, bevor du Onkel Homie erneut bewerten kannst."

Warscheinlich weil ich das letzte Mal schon positiv wegen deine Exceleinsatzes bewertet habe. ;-)
 
Dann hab ich mal ne positive dagelassen ;-)
 
@Tante Emma:
Gern geschehen.

Ich hatte doch noch Lust und hab nochmal kleine Kommentare (macht man ja an sich nicht als Entwickler *g* aber falls sich mal wer fragt was das alles soll) und Eingabeparamter hinzugefügt. Kannste nun anpassen wie du möchtest ;)

Code:
@ECHO off 

REM Usereingabe eines Parameters für die Anzahl der zu erzeugenden Zeilen
SET /p lines=Anzahl der zu erzeugenden Zeilen:

REM Usereingabe eines Parameters für den Text der bei Description stehen soll
SET /p desctext=Beschreibungstext eingeben:

REM Usereingabe eines Parameters für die Datei die geschrieben werden soll
SET /p filename=Dateinamen angeben:

REM Wir prüfen ob die Datei bereits vorhanden ist, wenn ja dann löschen wir sie
IF EXIST %filename%.txt del %filename%.txt 

REM Zunächst aktivieren wir die verzögerte Erweiterung von Umgebungsvariablen, sonst funktioniert der Zähler in der Schleife nicht korrekt
SETLOCAL enabledelayedexpansion 

REM Hier beginnt die for-Schleife: Start bei 1 Intervall 1 Zähler ist k
FOR /L %%k in ( 1, 1, %lines% ) do ( 

REM Variable number mit 00k also beim ersten Durchlauf 001 dann 002 usw.
SET "number=00%%k" 

REM mit ~ bekommt man einen Teilstring zurück, in diesem Fall -3 Zeichen (also von rechts). So wird z.B. aus 0010 -> 010
SET "number=!number:~-3!" 

REM Ausgabe in eine Datei. Mit >> wird immer eine Zeile Angehängt in der Datei.
ECHO ^<item source^=^"!number!.jpg^" thumb^=^"TN_!number!.jpg^" description^=^"%desctext%^"^/^> >> %filename%.txt 

REM Ende der for-Schleife
)

REM Ende des Gültigkeitsbereichs für die verzögerte Erweiterung von Umgebungsvariablen
ENDLOCAL

REM kann man auch weglassen. So endet das Script mit der Ausgabe "Drücken Sie eine beliebige Taste..."
PAUSE
.
EDIT :
.

Dann hab ich mal ne positive dagelassen ;-)

Dankö :)
 
Zuletzt bearbeitet:
Zurück
Oben Unten