Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Batch: String mit Zahl in Text ausgeben, vervielfältigen und Zahl erhöhen

Hey!

Also, folgendes:
Ich habe eine Batch, in der ich einen String eingebe per
set /p string=
und diesen dann per echo "%string%" >> file.txt
in eine Textdatei schreibe;

nun hat der String ABER eine ZAHL darin, und diese soll JEDES MAL um 1 höher sein, als die Startzahl, was ich definiere, per
set /p zahlersetzen "Zahl die zu ersetzen ist: "
set /p zahlanzahl "Wie oft? "

was auch funktioniert, aber sehr verhuntzt.

Mit einer for-Schleife ist es mir möglich, ALLE ZAHLEN mit DER SELBEN zu ersetzen, oder aber ALLES ausser der Zahl zu löschen, aber NICHT ganz einfach den TEXT zu BEHALTEN, aber die Zahl um 1 HOCHZUZÄHLEN???

Mit einem
set text=%%j
set text=!text:(???)!
kann ich zwar die Zahlen erhöhen, aber der Text wird einfach in die Tonne getreten.

Sprich die Text sieht dann (je nachdem was ich versuche) erst (z.B.!) so aus:
"TextBlabla999Blabla"
"TextBlabla999Blabla"
"TextBlabla999Blabla"

und NACH der "Ersetzungsaktion" entweder:
"TextBlabla777Blabla"
"TextBlabla777Blabla"
"TextBlabla777Blabla" //(weil 999 mit 777 ersetzt wurde)

ODER SO:
"777"
"778"
"779" //Script löscht ALLES AUSSER der Zahl, die ersetzt wird, erhöht aber, wie angegeben, die Zahl um +1.

Also ich kann zwar die Zahl +1 erhöhen, was ich will, aber den Text, der wird nicht erkannt/gelöscht.
Oder die Zahl wird ersetzt und Text behalten, aber eben nur die Zahl mit der angegebenen Zahl, und will partout nicht um 1 erhöhen.

Könnte mir jemand so freundlich sein, und sagen ob das überhaupt möglich ist? Und wenn ja, wie? 


Antworten zu Batch: String mit Zahl in Text ausgeben, vervielfältigen und Zahl erhöhen:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

... ganz allgemein:

Du musst die Zahl als eine eigene Variable behandeln,
sie bei jedem Schleifendurchlauf hochzählen
und sie erst dann in den Ausgabestring einfügen...

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ich habs jetzt so gelöst, dass ein Loop die Textzeile vervielfältigt, und IN der Textzeile (die manuel in de Bat eingetragen wird), mit %x% festgelegt wird, WO die Nummer ist, die ersetzt werden soll.

Nun schreibt er mit den String in die Textdatei, und dort wo sich %x% befindet (z.B. echo blabla%x%blubb >> text.txt) mache ich einfach set /a x=%x%+1, und fertig ist der Lack, funktioniert wunderbar, und DAS hatte ich so schon vorher. Alles andere habe ich probiert, und zig möglichkeiten probiert.

Das "Zahl" als eigene Variable habe ich schon verstanden, nur das Problem ist, dass er meine String nicht erkennt, und wenn er die Zahl erkennt UND die String diese nicht in die Datei schreibt, und wenn er sie Schreibt dann marke:
!text=9 
!text=10
!text=11

dieses ist (im Grunde) dann der INHALT der TXT, wenn sie erstellt wird, also nimmt er einfach nicht die String=, wohl aber die %x%+1, und das macht keinen Sinn.

Ich habe das Gefühl, dass weder findstr noch irgendeine for-Schleife funktionieren kann, da der Text auch Sonderzeichen beinhaltet.

Wenn es NUR nummern wären, habe ich schon eine For-Schleife, nur ist das Problem, sobald Text da ist, nimmt er weder das eine noch das andere, und die Textdatei ist voll im eimer, wenn er sie denn erstellt.

Jaja, selig sind die hauptberuflichen Programmierer, wenn man denn nur einen in der Schublade hätte, den man nur regelmäßig füttern muss, und schubbs, raus kommen die aberwitzigsten Scripts...

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

... ich habe nicht genau verstanden, wo jetzt Dein Problem ist, aber mit meinem Vorschlag habe ich dies gemeint:

Variable1: String "Meine Oma geht "
Variable2: String " mal einkaufen"
Variable3: Zahl = 0 # Startwert

for (1 bis sonstwohin)
 Variable3 = Variable3 + 1
 Ausgabe: Variable1 + Variable3 + Variable2
next

Ergibt:
Meine Oma geht 1 mal einkaufen
Meine Oma geht 2 mal einkaufen
.
Meine Oma geht sonstwohin mal einkaufen

Die Verkettung (Join, Concat) von Strings ist nicht schwer  ;)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
1 Leser hat sich bedankt

ACH verdammich, hugenyn!

Ausgerechnet DAS habe ich noch nicht probiert, einfach den String in 2 oder mehr TEILE schneiden, und die hochgezählten nummern an der richtigen Stelle einfügen, ÖRKS! ;D

Danke für den Tipp, so gehts dann eben auch, HAHA ;D

THX!

Edit:

Jopp, passt perfekt, nur habe ich es simpler gelöst:

set string1=xxx
set string2=yyy
set /a x=0
set /a anzahl=50
set /a anzahl=%x%+%anzahl%

Dann später

:loop
if (%x%) == (%anzahl%) goto end
echo %string1%%x%string2% >> ausgabe.txt
set /a x=%x%+1
goto loop

Fügt zwischen String1 und String2 eben x ein, und rechnet jedes mal hoch, nur muss jetzt halt eben an der EXAKTEN stelle getrennt werden und in string 2 weiter gemacht werden, immer noch besser als jedes mal die Batch editieren zu müssen, und man könnte ja noch einen zweiten Zähler bauen oder einen dritten, und diesen nur per yes-no Abfrage aktivieren, LOL.

« Letzte Änderung: 15.12.11, 06:51:51 von MTVR6578 »

« Hilfe beim programm mit C#menü mit .bat »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Malware
Mit Malware bezeichnet man allgemein Schadprogramme, die dazu entwickelt worden schädliche Funktionen auf Computern auszuführen. Das Wort setzt sich zusammen au...

Hypertext
Hypertext ( zu Deutsch: Übertext) ein ein von dem Informatiker Theodore L. Nelson in den sechziger Jahren geprägter Begriff für Text, der dreidimensional g...

Textur
Unter einer Textur versteht man eine Oberflächenstrukur, die ein bestimmtes Material simuliert, wie Holz, Tapete oder Metall. Bei der 3D-Computeranimation bezeichnet...