bimbo625
Goto Top

Batch! Variable Zeile mit festem Anfang, Änderung nach dem Anfang von variabler zahl in neue zahl!

Habe das Batch-Script fast fertig habe aber nur dieses Problem!

Hallo!

Habe schon viele Beiträge gelesen aber keine passende Antwort gefunden.

Daher nun meine Frage:

Wie kann ich eine Zeile die immer anders ist finden und den Inhalt nach dem immer gleichen Anfang von einer unbekannten in eine bestimmte Zahl ändern???

Am besten wären Beispiele!
Mit "account" als Anfang
und "zahl1" als unbekannte Zahl
und "zahl2" als bestimmte Zahl
und wenns nötig ist "zeile1" für die Zeile!

Wer Fehler findet darf sie behalten und Danke für alle Antworten!!!
Kommentar vom Moderator Biber am Feb 03, 2011 um 19:57:27 Uhr
Dieser Beitrag ist definitiv im falschen Bereich.
Aber in welchen meiner Lieblingsbereichesoll ich ihn denn nun verschieben?

Content-Key: 160093

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

Printed on: April 24, 2024 at 19:04 o'clock

Mitglied: 60730
60730 Feb 03, 2011 at 19:29:48 (UTC)
Goto Top
moin,

Habe schon viele Beiträge gelesen aber keine passende Antwort gefunden.
Am besten wären Beispiele!

Wie kann ich eine Zeile die immer anders ist finden und den Inhalt nach dem immer gleichen Anfang von einer unbekannten in eine bestimmte Zahl ändern???
  • Durch suchen von allem bekannten und dann bleibt am Schluß nur noch das unbekannte übrig face-wink

Wer Fehler findet darf sie behalten und Danke für alle Antworten!!!
  • Deine Taste zwischen , und - ist defekt und deshalb nimmst du die geshiftete 1?

Sorry, aber du erwartest doch nicht ernsthaft, das man[n] auf so eine Frage! - eine Antwort aus dem Hut ziehen kann, Houdini ist es schon länger und Siegfried & Roy machen auch nicht mehr lange.

@ Frank Scholl - ich vermisse einen Kristallkugelbutton.
...und da waren Sie wieder, die Nicks mit den Zahlen, die mir bereiten diese qualen
Member: pieh-ejdsch
pieh-ejdsch Feb 03, 2011 at 19:30:22 (UTC)
Goto Top
moin bimbo625,

das geht mit findstr zb bestimmte Zahl=3 bei zweistelligen ziffern
findstr "^account" "D:\Datei.txt"|findstr "[0-9]3"

wie ist das gemeint wenn nötig ist den Ausdruck zeile 1 finden? soll es gefunden werden wenn der Rest(Anfang) gefunden wurde?

[Edit] @ Timo das mit dem KristallKugelButton ist gut [/Edit]

Gruß Phil
Member: bimbo625
bimbo625 Feb 03, 2011 at 19:47:45 (UTC)
Goto Top
heyho,

also ich suche eine Möglichkeit in einer txt mit ca. 2000 Zeilen eine Zeile zu finden und diese zu Ersetzten durch die selbe Zeile nur eben mit einer anderen Zahl.
Also ich zeigs mal so:

Zeile X fester_Inhalt: X

X ist bei mir eine unbekannte Zahl!!!

Gruß Bimbo
Member: Skyemugen
Skyemugen Feb 03, 2011 at 19:51:08 (UTC)
Goto Top
Aloha bimbo ... Warum nennt man sich eigentlich freiwillig so? ...

Eine Zeile, die immer anders ist ... inwiefern spielt das mit „Zeile1“ zusammen?

Phil hat scheinbar eine Ahnung deines Wahnsinns aber ich reihe mich mal wieder in T-Mo's Schlange ein und warte am Kristallkugel-Schalter auf Kristallkugelnausgabe.

(Was ich damit sagen will? - Was willst du sagen? Eindeutig ist anders.)

greetz André

edit: Ah, er schrieb noch etwas, während ich geposted habe ... nun wird die Sache doch schon klarer, ich kann schon den Mond sehen.

edit an den TE Toll, dass dein Thread-Titel mit Batch! anfängt aber das war unnötig ;) dafür hätten wir hier den Batch! (und so 'n Zeugs) Bereich.

edit an T-Mo: Schreibt man Qualen nicht für gewöhnlich groß? :P

(extra-edit:
Dieser Beitrag ist definitiv im falschen Bereich.
Aber in welchen meiner Lieblingsbereichesoll ich ihn denn nun verschieben?
Tja, Biberchen, wer die Wahl hat ... willst du den Publikumsjoker einsetzen?) ;)
Member: pieh-ejdsch
pieh-ejdsch Feb 03, 2011 at 20:04:44 (UTC)
Goto Top
naja die Ahnung war wohl doch ein kleines Stück daneben.

mit Zahl ist das so ein Ding mit dem Ersetzen. Ist die Zahl eine mehrstellige Ziffer oder eine einzelne Ziffer?
kommt in der Zeile nochmehr nach dieser Zahl?

wir haben hier noch so schöne QuellCodeFormatierungen

Gruß Phil
Member: Biber
Biber Feb 03, 2011 at 20:14:26 (UTC)
Goto Top
Moin bimbo625,

willkommen im Forum.

Ich weiss nicht, was du nebenbei gemacht hast, während du deinen Erstbeitrag hier reingetackert hast...
...möglicherweise nebenbei ein bisschen in der Tagesschau den Krawallen in Kairo oder dem Zyklon downunder zugeschaut?

Jedenfalls hast du jetzt eine halbe Stunde nette Leute damit beschäftigt, diffuse Nebelschwaden wegzuwedeln und es könnte noch eine weitere halbe Stunde dauern, bis durch beharrliches Nachhaken endlich alles auf dem Tisch liegt.

Oder... ich bemühe mich ja immer, auch das Positive hervorzuheben.

Positiv finde ich, dass du ja nach eigenen Aussagen dein Batch-Suchen-und-Ersetzen-Skript eigentlich fertig hast bis auf eine einzige Funktionalität.
Okay, kleiner Wermutstropfen - die fehlende Funktionalität ist das Suchen. Ach ja, und das Ersetzen.

Positiv finde ich, dass du bereitwillig versuchst, die noch dubiosen Sachverhalte aufzuklären.
Andererseits - jetzt haben schon zwei bis drei Helferlein gefragt, ob sich die Diskrepanz zwischen "eine Zeile suchen und ändern"
und "und wenns nötig ist "zeile1" für die Zeile!" auflösen lässt.

Ich möchte nur zu bedenken geben, dass dieser Monat nur 28 Tage insgesamt hat.
Kann sein, dass dir in der kurzen Zeit niemand den Sonderpreis für die unverständlichste Frage des Monats streitig machen wird.

Grüße
Biber
Member: Pago159
Pago159 Feb 03, 2011 at 20:19:49 (UTC)
Goto Top
Hi Bimbo,

  • ist der bekannte bereich eigentlich nur in dieser Zeile, die du verändern möchtest oder auch in Zeilen, welche nicht Verändert werden dürfen/sollen?

  • Könntest du vll zur vereinfachung mal ein Konkretes beispiel geben, was man auch wirklich erkennen kann?
      • Mehrere Zeilen, welche erkennbar machen, was du gerne machen würdest! (Selber Textblock zweimal, wobei der zweite die änderung beinhaltet.)

Desweiteren hast du noch über der Texteingabe in Formatierungshilfe welche
auch Struktur und Gliederung in die ganze sache bringt (wenn sie benutzt wird)
Für die zwei Beispiele könntest du zum Bleistift die Textblöcke nutzen.

Dies wäre vll mal ein anfang hier etwas Verständniss in die sache zu bringen.

Lg Grapper
Member: bimbo625
bimbo625 Feb 03, 2011 at 20:31:37 (UTC)
Goto Top
Heyho,

also die ganze Zeile ist einzigartig in dem Ordner und sieht wirklich nur so aus:
 fester_inhalt: 594534
also [leerzeichen]fester[unterstrich]inhalt[doppelpunkt][leerzeichen]594534

594534 als Beispiel (kann aber auch so 1 oder so 0 oder so 6563134 aussehen!)

und ich weiß wie ich es finde: ich suche nach dem festen_inhalt, aber wie kann ich es dann nach dem 2. [leerzeichen] von 594534 in z.b. 10 ändern???

im ganzen sieht das ca so aus:

irgend
was
oder
 fester_inhalt: 594534
so
was
Member: Pago159
Pago159 Feb 03, 2011 at 20:34:36 (UTC)
Goto Top
Gut, das ist ja jetzt schonmal ein bisschen besser erkennbar, sind denn nach den Zahlen noch weitere sachen da?
Sprich kann man einfach die ganze Zeile löschen und dann die neue Zeile einfügen?
Oder ist in der Zeile noch mehr zu beachten?

Ach ja, ich habe meinen Beitrag nochmal editiert, du könntest ihn dir ja nochmal durchlesen. ;)

/Edit

Übrigens würden auch Satzzeichen bei der Formatierun Helfen.

Edit/

Lg Grapper
Member: pieh-ejdsch
pieh-ejdsch Feb 03, 2011 at 21:11:35 (UTC)
Goto Top
das könnte dann in etwa so gehen
@echo off &setlocal disabledelayedexpansion
set "Input=D:\Adminhelp\test.txt"  
set "Output=D:\Adminhelp\Ausgabe.txt"  
set "Zahl=512"  

(
echo @echo off ^& setlocal enabledelayedexpansion
echo echo.!Line!
echo endlocal
)>"%temp%\Line.cmd"  

(
for /f "usebackq delims=" %%i in ("%Input%") do (  
	set "line=%%i"  
	"%temp%\Line.cmd"|findstr /b /c:" account" >nul 2>nul&&(  
		for /f "tokens=1* delims=1234567890" %%j in ("%%i") do echo.%%j%Zahl%%%k  
	)||echo.%%i
)
)>"%temp%\Temp"  
move "%temp%\Temp" "%Output%"  

[Edit] Output nachgezogen [/Edit]

Gruß Phil
Member: Skyemugen
Skyemugen Feb 03, 2011 at 21:15:11 (UTC)
Goto Top
Aloha Phil,

mach doch die Eingabe der Zahl als set /p, so kann er sich dann jedes Mal eine passende einfallen lassen (denn irgendwie scheint die mir nicht so wirklich festgelegt zu werden).

greetz André

edit: Sollte %ausgabe% nicht %output% sein? Und irgendwas haut da noch nicht hin, die Zahl taucht jetzt nirgendwo auf (im output). ^.^
Member: pieh-ejdsch
pieh-ejdsch Feb 03, 2011 at 21:20:32 (UTC)
Goto Top
moin Sky, (heute schon das zweite mal)

ja das kann doch bimbo625 bestimmt schon selbst.

Gruß Phil
Member: bimbo625
bimbo625 Feb 03, 2011 at 21:23:44 (UTC)
Goto Top
Heyho @andré,

die Zahl die nachher da stehen soll ist von mir festvorgegeben
und danke für die Lösung probiers gleich mal aus!!
Member: Skyemugen
Skyemugen Feb 03, 2011 at 22:01:18 (UTC)
Goto Top
Aloha,

ich versteh immer noch nicht, wo du wie jetzt account haben willst ...

bei mir funktioniert Phil's Skript nicht so wie es soll(te?), daher hab ich mich mal dran gesetzt und ein wenig anders es versucht (hatte davor auch schon anders angefangen)

@echo off & setlocal enabledelayedexpansion
set "Alt=E:\alt.txt"  
set "Neu=E:\neu.txt"  
set "fest= fester_inhalt: "  

for /f "tokens=3 delims= " %%i in ('findstr /n %fest% %Alt%') do (  
echo Zahl vorher: %%i
set Zahl=%%i
set Wert=10
)
set Von=%fest%%Zahl%
set Nach=%fest%%Wert%

set R=%temp%ReplaceInFile.vbs
>%R% echo Set fso=CreateObject("Scripting.FileSystemObject"):Set a=WScript.Arguments:T=fso.OpenTextFile(a(0)).ReadAll:fso.CreateTextFile(a(0)).Write Replace(T,a(1),a(2))  

copy "%Alt%" "%Neu%">nul  
cscript //nologo %R% "%Neu%" "%Von%" "%Nach%"  

Wie gesagt: Das mit account ist mir noch schleierhaft, wie du das jetzt wohin haben willst.

greetz André ich geh erstmal schlafen; die vbs-Umsetzung hab ich mir bei bastla abgeguckt *g*

edit: doofes System hier, haut einfach mein Skript auseinander ...
Member: bastla
bastla Feb 03, 2011 at 22:48:44 (UTC)
Goto Top
Hallo Skyemugen!

So viele Zeilen hab ich doch aber bestimmt nicht gebraucht face-wink - eher:
@echo off & setlocal
set "Alt=E:\alt.txt"  
set "Neu=E:\neu.txt"  
set "fest=fester_inhalt: "  

for /f "tokens=3 delims= " %%i in ('findstr /n %fest% "%Alt%"') do (  
echo Zahl vorher: %%i
set Zahl=%%i
set Wert=10
)
set "Von=%fest%%Zahl%"  
set "Nach=%fest%%Wert%"  

set R=%temp%ReplaceInFile.vbs
>%R% echo Set fso=CreateObject("Scripting.FileSystemObject"):Set a=WScript.Arguments:T=fso.OpenTextFile(a(0)).ReadAll:fso.CreateTextFile(a(0)).Write Replace(T,a(1),a(2))  

copy "%Alt%" "%Neu%">nul  
cscript //nologo %R% "%Neu%" "%Von%" "%Nach%"  
- und falls Ersetzen in der Datei (ohne Sicherungskopie) genügt:
@echo off & setlocal
set "Datei=E:\alt.txt"  
set "fest=fester_inhalt: "  

for /f "tokens=3 delims= " %%i in ('findstr /n %fest% "%Datei%"') do (  
echo Zahl vorher: %%i
set Zahl=%%i
set Wert=10
)
set "Von=%fest%%Zahl%"  
set "Nach=%fest%%Wert%"  

set R=%temp%ReplaceInFile.vbs
>%R% echo Set fso=CreateObject("Scripting.FileSystemObject"):Set a=WScript.Arguments:T=fso.OpenTextFile(a(0)).ReadAll:fso.CreateTextFile(a(0)).Write Replace(T,a(1),a(2))  

cscript //nologo %R% "%Datei%" "%Von%" "%Nach%"  
Grüße
bastla
Member: pieh-ejdsch
pieh-ejdsch Feb 03, 2011 at 23:41:17 (UTC)
Goto Top
moin,
ich versteh immer noch nicht, wo du wie jetzt account haben willst ...
steht doch ganz ganz oben...

daher macht der Batch schon das was er soll.
Demo am Promt:
>type test.txt
 account & 7125387631487 & noch mehr
andere Zeile
 account 11111 rest
 nochwas 22222
>"\cmd befehle\VariLine"
>type Ausgabe.txt
 account & 512 & noch mehr
andere Zeile
 account 512 rest
 nochwas 22222
eventuell hast Du kein Leerzeichen in die Suchzeichenfolge eingefügt

Gruß Phil
Member: Skyemugen
Skyemugen Feb 04, 2011 at 07:20:29 (UTC)
Goto Top
Aloha bastla,

ich mag das Forum manchmal nicht, es zerballert mir öfter das Skript (mehr Zeilen als ich eigentlich habe wie in diesem Fall ...)

@phil,

ja da steht das ganz oben, ich hab trotzdem nicht verstanden, wo genau er es haben wollte hätte er mal im Beispiel angeben sollen

jedenfalls hat dein Skript bei mir nicht funktioniert (nein, das Leerzeichen war da, sonst wäre meines nicht gelaufen ^.^ - war schon alles so, wie er es für das Ersetzen vorgab), denn bei mir waren input und output identisch

aber vielleicht war es auch einfach schon zu spät für Windows 7 *g*

egal, manchmal ist seltsam

greetz André