nt24
Goto Top

in TXT Datei einen zusätzlichen Text einfügen !!

Grüß Gott
wie kann ich in einen *.txt Datei in einer Speziellen Zeile einen Text einfügen ??? mit hilfe von MS-DOS Befehlen

oder funktioniert das gar nicht ???

ich bedanke mich im voraus für allen Beiträge

Mit freundlichen Grüßen
NT24

Content-ID: 13260

Url: https://administrator.de/forum/in-txt-datei-einen-zusaetzlichen-text-einfuegen-13260.html

Ausgedruckt am: 23.12.2024 um 10:12 Uhr

gemini
gemini 17.07.2005 um 22:02:32 Uhr
Goto Top
Ich kann dir einen Weg mit VBS zeigen.

Das Script öffnet die Datei "X:\Pfad\zur\datei.ext" und durchsucht sie Zeile für Zeile nach der Zeichenfolge "Gesuchte Zeichenfolge" am Zeilenanfang.
Jede gelesene Zeile wird in die Variable strLine geschrieben.
Ist "Gesuchte Zeichenfolge" gefunden wird "Text der eingefügt werden soll" angehängt und alle Zeilen bis zum Ende weiter durchlaufen.

Zum Schluß wird "X:\Pfad\zur\datei.ext" zum schreiben geöffnet und der Inhalt von strText, also der komplette, geänderte Dateiinhalt zurückgeschrieben.

Ich hab sowas für einen ähnlichen Zweck im Einsatz und es funktioniert einwandfrei.

Wenn immer die gleiche Zeile (Zeilennummer) umgeschrieben werden soll oder der Suchwert nicht am Zeilenanfag steht kann man das entspr. anpassen

Option Explicit

Dim objFSO, objWshNetwork, objFile
Dim strWorkDir, strText, strText2, strLine, strPathFind
Const ForReading = 1, ForWriting = 2, ForAppending = 8

strWorkDir = "X:\Pfad\zur\datei.ext"
strText = ""
strPathFind = LCase("Gesuchte Zeichenfolge")
strText2 = "Text der eingefügt werden soll"

Set objFSO = Wscript.CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(strWorkDir) Then
Set objFile = objFSO.OpenTextFile(strWorkDir, ForReading)
  Do Until objFile.AtEndOfStream
    strLine = objFile.ReadLine
      If Left(LCase(strLine), Len(strPathFind)) = strPathFind Then
       strLine = strPathFind & strText2
      End If
       strText = strText & strLine & vbCrLf
  Loop
objFile.Close
Else
  MsgBox "Die Datei " & strWorkDir & " wurde nicht gefunden."
End If

Set objFile = objFSO.OpenTextFile(strWorkDir, ForWriting)
objFile.Write strText
objFile.Close
Desperado
Desperado 17.07.2005 um 22:15:55 Uhr
Goto Top
traced82
traced82 18.07.2005 um 07:45:03 Uhr
Goto Top
Warum so umständlich?
Wenn Du nur eine Zeile z.B. am Ende anfügen magst:
[Start-Ausführen-CMD] bzw. in ner Batch-Datei

echo text>>dateiname.txt

MfG
Basti
Biber
Biber 18.07.2005 um 09:47:07 Uhr
Goto Top
Moin NT24,

ich halte auch geminis Ansatz für den flexibelsten und wartbarsten.
Solltest Du aus firmenpolitischen Gründen kein *.vbs einsetzen können/dürfen, dann geht das natürlich auch alles über "reine" DOS-Befehle. Aber dann wäre es hilfreich, Du postest mal etwas genauer die Gegebenheiten.. also ob Du immer die Zeile 8 ersetzen musst oder variabel eine Zeile, die vorher einen bestimmten String enthält oder nach einer bestimmten Zeile eine neue einfügen..
Dann bekommst Du auch eine passende Lösung.

Frank / der Biber aus Bremen
NT24
NT24 24.07.2005 um 23:39:26 Uhr
Goto Top
Kannst du mir so eine VB Datei schicken ??? bitte

MFG
NT24
NT24@gmx.net
Biber
Biber 24.07.2005 um 23:53:14 Uhr
Goto Top
Moin NT24,
einfach geminis Skript (alles innerhalb der "################" ) markieren, kopieren und als Datei InsertLine.vbs (oder einen anderen Namen, aber mit Endung *.vbs) abspeichern.

Von der Dos-Ebene dann einfach starten mit InsertLine Parameter. Das wars.

Frank / der Biber aus Bremen
[edit] Montag früh
Sorry, gemini, hast recht - waren keine Parameter vorgesehen, hatte zu flüchtig gelesen.
[/edit]
gemini
gemini 25.07.2005 um 06:35:47 Uhr
Goto Top
Folgende Zielen müssen angepasst werden:
strWorkDir = "X:\Pfad\zur\datei.ext"
strPathFind = LCase("Gesuchte Zeichenfolge")
strText2 = "Text der eingefügt werden soll"

... und Sorry, aber für Parameterübergabe ist es bis jetzt nicht vorgesehen.

Wenn Argumente verwendet werden sollen, muss folgendes eingefügt werden:
Zeile 2: Dim objArgs
Zeile 6: Set objArgs = WScript.Arguments

Wenn der einzufügende Text als Argument übergeben werden soll:
Zeile10: strText2 = objArgs(0)
Scriptaufruf nun InsertLine.vbs Einfügetext
Mehrere Argumente können durch Leerzeichen getrennt übergeben werden und mit objArgs(1), objArgs(2) usw. ausgewertet werden.

Leider hast du noch nicht gesagt, ob es sich um einen bestimmten, festgelegten Text handelt, der eingefügt werden soll oder ob dieser variabel ist und wie die Einfügestelle gefunden werden kann (Suchtext, Zeilennummer?).
Je genauer Deine Angaben sind, desto besser passt die Lösung.

Schönen Tag!
NT24
NT24 25.07.2005 um 20:41:29 Uhr
Goto Top
Ich bedanke mich erst mals bei dir bei deir hilfe stellung zu deiner Frage es sollte in einem TextFeld ein Text eingegeben werden und dieser in einer Text Datei gespeichert werden!

mfg
NT24
gemini
gemini 25.07.2005 um 21:54:10 Uhr
Goto Top
Hallo NT24!

Also nochmal, der User startet das Script, es erscheint eine Meldung mit Textbox, die zur Eingabe eines Textes auffordert. Nachdem der User einen Text eingegeben hat wird dieser an einer bestimmten Stelle einer bestimmten, immer gleich lautenden Datei gespeichert.

Bei Usereingaben stellt sich natürlich auch immer die Frage, ist dieser Mensch in der Lage, die Textbox mit dem richtigen Inhalt zu füllen. Sonst muss auch noch eine Fehlerbehandlung eingebaut werden.

Jetzt weiß ich immer noch nicht wie diese bestimmte Stelle in der Textdatei gefunden werden kann. Das wär schon irgendwie wichtig. Ist es immer eine bestimmte Zeilennummer oder steht in der betreffenden Zeile ein bestimmtes Wort nach dem man suchen kann.

Wen du mir die Fragen beantworten würdest kämen wir evtl. schneller zu einem befriedigenderen Ergebnis.

~~~~~~~~~~

Für die User-Eingabebox ersetze diese Zeile
strText2 = "Text der eingefügt werden soll"
mit dieser Zeile
strText2 = Inputbox("Welcher Text soll eingefügt werden?", "InsertLine")
MM69
MM69 13.10.2005 um 14:11:02 Uhr
Goto Top
DIR /A /D /B "C:\Dokumente und Einstellungen" > "D:\MM_ETF_Test\Benutzer.txt"
FOR /f "tokens=*" %%f IN (Benutzer.txt) DO echo C:\Dokumente und Einstellungen\%%f\Recent\ >>1benutzer.txt
FOR /f "tokens=*" %%f IN (Benutzer.txt) DO echo C:\Dokumente und Einstellungen\%%f\Cookies\ >>1benutzer.txt
FOR /f "tokens=*" %%f IN (Benutzer.txt) DO echo C:\Dokumente und Einstellungen\%%f\Lokale Einstellungen\Verlauf\ >>1benutzer.txt
FOR /f "tokens=*" %%f IN (Benutzer.txt) DO echo C:\Dokumente und Einstellungen\%%f\Lokale Einstellungen\Temporary Internet Files\ >>1benutzer.txt
FOR /f "tokens=*" %%f IN (Benutzer.txt) DO echo C:\Dokumente und Einstellungen\%%f\Lokale Einstellungen\Temp\ >>1benutzer.txt
FOR /f "tokens=*" %%f IN (Benutzer.txt) DO echo C:\Dokumente und Einstellungen\%%f\Anwendungsdaten\Microsoft\Office\Zuletzt verwendet\ >>1benutzer.txt
FOR /f "tokens=*" %%f IN (Benutzer.txt) DO echo C:\Dokumente und Einstellungen\%%f\Lokale Einstellungen\Anwendungsdaten\Microsoft\CD Burning\ >>1benutzer.txt
FOR /f "tokens=*" %%f IN (Benutzer.txt) DO echo C:\Dokumente und Einstellungen\%%f\InstallShield Installation Information\ >>1benutzer.txt

if /i "C:\WINDOWS" == "C:\WINDOWS" goto xp
if /i "C:\WINNT" == "C:\WINNT" goto winnt
else goto ende

:winnt
echo C:\WINNT\Cookies\ >> 1benutzer.txt
echo C:\WINNT\Temp\ >> 1benutzer.txt
echo C:\WINNT\Temporary Internet Files\ >> 1benutzer.txt
echo c:\WINNT\system32\config\systemprofile\recent\ >> 1benutzer.txt

:xp

echo C:\Windows\Cookies\ >> 1benutzer.txt
echo C:\Windows\Prefetch\ >> 1benutzer.txt
echo C:\Windows\Temp\ >> 1benutzer.txt
echo C:\Windows\Temporary Internet Files\ >> 1benutzer.txt
echo c:\windows\system32\config\systemprofile\recent\ >> 1benutzer.txt

:ende


Ergebnis: Benutzer.txt

Administrator
All Users
Default User
LocalService
MM
NetworkService
Service


Ergebnis: Benutzer1.txt

C:\Dokumente und Einstellungen\Administrator\Recent\
C:\Dokumente und Einstellungen\All Users\Recent\
C:\Dokumente und Einstellungen\Default User\Recent\
C:\Dokumente und Einstellungen\LocalService\Recent\
C:\Dokumente und Einstellungen\MM\Recent\
C:\Dokumente und Einstellungen\NetworkService\Recent\
C:\Dokumente und Einstellungen\Service\Recent\
C:\Dokumente und Einstellungen\Administrator\Cookies\
C:\Dokumente und Einstellungen\All Users\Cookies\
C:\Dokumente und Einstellungen\Default User\Cookies\
C:\Dokumente und Einstellungen\LocalService\Cookies\
C:\Dokumente und Einstellungen\MM\Cookies\
C:\Dokumente und Einstellungen\NetworkService\Cookies\
C:\Dokumente und Einstellungen\Service\Cookies\
C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Verlauf\
C:\Dokumente und Einstellungen\All Users\Lokale Einstellungen\Verlauf\
C:\Dokumente und Einstellungen\Default User\Lokale Einstellungen\Verlauf\
C:\Dokumente und Einstellungen\LocalService\Lokale Einstellungen\Verlauf\
C:\Dokumente und Einstellungen\MM\Lokale Einstellungen\Verlauf\
C:\Dokumente und Einstellungen\NetworkService\Lokale Einstellungen\Verlauf\
C:\Dokumente und Einstellungen\Service\Lokale Einstellungen\Verlauf\
C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Temporary Internet Files\
C:\Dokumente und Einstellungen\All Users\Lokale Einstellungen\Temporary Internet Files\
C:\Dokumente und Einstellungen\Default User\Lokale Einstellungen\Temporary Internet Files\
C:\Dokumente und Einstellungen\LocalService\Lokale Einstellungen\Temporary Internet Files\
C:\Dokumente und Einstellungen\MM\Lokale Einstellungen\Temporary Internet Files\
C:\Dokumente und Einstellungen\NetworkService\Lokale Einstellungen\Temporary Internet Files\
C:\Dokumente und Einstellungen\Service\Lokale Einstellungen\Temporary Internet Files\
C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Temp\
C:\Dokumente und Einstellungen\All Users\Lokale Einstellungen\Temp\
C:\Dokumente und Einstellungen\Default User\Lokale Einstellungen\Temp\
C:\Dokumente und Einstellungen\LocalService\Lokale Einstellungen\Temp\
C:\Dokumente und Einstellungen\MM\Lokale Einstellungen\Temp\
C:\Dokumente und Einstellungen\NetworkService\Lokale Einstellungen\Temp\
C:\Dokumente und Einstellungen\Service\Lokale Einstellungen\Temp\
C:\Dokumente und Einstellungen\Administrator\Anwendungsdaten\Microsoft\Office\Zuletzt verwendet\
C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Microsoft\Office\Zuletzt verwendet\
C:\Dokumente und Einstellungen\Default User\Anwendungsdaten\Microsoft\Office\Zuletzt verwendet\
C:\Dokumente und Einstellungen\LocalService\Anwendungsdaten\Microsoft\Office\Zuletzt verwendet\
C:\Dokumente und Einstellungen\MM\Anwendungsdaten\Microsoft\Office\Zuletzt verwendet\
C:\Dokumente und Einstellungen\NetworkService\Anwendungsdaten\Microsoft\Office\Zuletzt verwendet\
C:\Dokumente und Einstellungen\Service\Anwendungsdaten\Microsoft\Office\Zuletzt verwendet\
C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Anwendungsdaten\Microsoft\CD Burning\
C:\Dokumente und Einstellungen\All Users\Lokale Einstellungen\Anwendungsdaten\Microsoft\CD Burning\
C:\Dokumente und Einstellungen\Default User\Lokale Einstellungen\Anwendungsdaten\Microsoft\CD Burning\
C:\Dokumente und Einstellungen\LocalService\Lokale Einstellungen\Anwendungsdaten\Microsoft\CD Burning\
C:\Dokumente und Einstellungen\MM\Lokale Einstellungen\Anwendungsdaten\Microsoft\CD Burning\
C:\Dokumente und Einstellungen\NetworkService\Lokale Einstellungen\Anwendungsdaten\Microsoft\CD Burning\
C:\Dokumente und Einstellungen\Service\Lokale Einstellungen\Anwendungsdaten\Microsoft\CD Burning\
C:\Dokumente und Einstellungen\Administrator\InstallShield Installation Information\
C:\Dokumente und Einstellungen\All Users\InstallShield Installation Information\
C:\Dokumente und Einstellungen\Default User\InstallShield Installation Information\
C:\Dokumente und Einstellungen\LocalService\InstallShield Installation Information\
C:\Dokumente und Einstellungen\MM\InstallShield Installation Information\
C:\Dokumente und Einstellungen\NetworkService\InstallShield Installation Information\
C:\Dokumente und Einstellungen\Service\InstallShield Installation Information\
C:\Windows\Cookies\
C:\Windows\Prefetch\
C:\Windows\Temp\
C:\Windows\Temporary Internet Files\
c:\windows\system32\config\systemprofile\recent\

Danach soll Benutzer2.txt erstellt werden die dann so aussehen soll:

1=C:\Dokumente und Einstellungen\Administrator\Recent\
2=C:\Dokumente und Einstellungen\All Users\Recent\
3=C:\Dokumente und Einstellungen\Default User\Recent\
4=C:\Dokumente und Einstellungen\LocalService\Recent\
5=C:\Dokumente und Einstellungen\MM\Recent\

Alle Zeilen sollen nummeriert werden bis x Zeile.

Dann diese Benutzer2.txt als emptemp2.ini abgespeichert werden: die in Roter Farbe müssen dann angepasst ( eingefügt , geändert werden)


[form2]
left=420
top=326
[form1]
maximized=0
left=317
top=259
width=696
height=482
treeWidth=247
lastOneSelected=12
Splitter1Left=247
CBoxZeroBytes=0
[extlview]
CurrentSortAscending=1
LastColumnClicked=0
[folders]
*number=12 (* muss angepasst werden)
0=Computer
*1=c:\dokume~1\mm\lokale~1\temp\
*2=c:\dokumente und einstellungen\mm\cookies\
*3=c:\dokumente und einstellungen\mm\lokale einstellungen\temp\
*4=c:\dokumente und einstellungen\mm\lokale einstellungen\temporary internet files\
*5=c:\dokumente und einstellungen\mm\lokale einstellungen\verlauf\
*6=c:\dokumente und einstellungen\mm\recent\
*7=c:\dokumente und einstellungen\networkservice\cookies\
*8=c:\dokumente und einstellungen\networkservice\lokale einstellungen\temporary internet files\
*9=c:\dokumente und einstellungen\networkservice\lokale einstellungen\verlauf\
*10=c:\windows\debug\
*11=c:\windows\system32\config\systemprofile\recent\
*12=c:\windows\temp\
[filetypes]
number=22
0=---
1=$$$
2=$db
3=*.gid
4=aps
5=bak
6=bsc
7=chk
8=da0
9=db$
10=dir
11=dmp
12=ilk
13=mscreate
14=mtx
15=ncb
16=old
17=pch
18=rws
19=sbr
20=syd
21=temp
22=tmp
[zerofiletypes]
number=-1
[shorcutExclFolders]
number=-1
[tmpFilesExcludeFolders]
number=-1


Hat jemand da eine Idee wie ich das umgesetzt bekomme?? Leider komme ich nicht weiter. Danke im Voraus für eure Hilfe.
Biber
Biber 13.10.2005, aktualisiert am 17.10.2012 um 16:03:30 Uhr
Goto Top
Moin, mm69,

Dir auch einen Schönen Guten Tag und herzlich willkommen.
Das Erstellen der Benutzer2.txt mit den durchnummerierten Zeilen ließe sich über drei oder vier Zeilen Batch abfackeln mit einer FOR /F -Schleife.
So etwas ähnliches habe ich mal Workshop Batch for Runaways - Part II - Ein bisschen Handwerkszeug beschrieben.

Und ebenfalls über eine aufgebohrte FOR /F-Schleife ließe sich auch diese emptemp.ini sicherlich neu erstellen - wenn es denn überhaupt Batch und Textdatei-Verarbeitung sein soll(?).
Weil... sich aus drei Text-Dateien etwas zusammenmischen, ist ja vielleicht nicht die wartbarste Lösung. Sieht mir doch verdächtig nach tabellarischen und hierarchischen Strukturen aus... jedenfalls nach Strukturen, die schon differenzierter sind als "Textdatei mit Unterebene Zeile". Evtl. also eher was mit Tabellen -> irgendein simples Frontend-Tabellen-Tool wie Excel/Access/Open Office zur Daten-Abbildung.

Was ist denn der Hintergrund der Anforderung?

Frank / der Biber aus Bremen

P.S. Die roten Zeilen sind bei mir nur sehr schwach eingefärbt. Könntest Du eine Farbe versuchen bitte?
MM69
MM69 13.10.2005 um 14:47:33 Uhr
Goto Top
Hi,

danke erst mal für deine Antwort. Es soll über eine Batch ablaufen und es ist für ein Plugin für BartPe gedacht. Das Programm heißt Empty Temp Folders v.2.8.3. Durch den Batch wird die Benutzer Pfade ermittelt und eine inii-Datei erstellt damit das Programm funktioniert. Mal sehen ob ich aus deinem Batch schlau werde.
Biber
Biber 13.10.2005 um 15:50:01 Uhr
Goto Top
@MM69
...bestimmt wirst Du schlau draus... ich hab ihn ja auch nach dem dritten Lesen verstanden face-wink
MM69
MM69 13.10.2005 um 16:39:23 Uhr
Goto Top
Kriege nicht angepasst und so wie im Beispiel funktioniert bei mir nicht face-sad
Biber
Biber 14.10.2005 um 23:30:18 Uhr
Goto Top
@MM69
Versteh ich nicht.
Das Erzeugen der "Benutzer2.txt" ist doch ein Oneliner vom Prompt aus...??
> (set /a cnt=0) & @for /f "delims=" %i in ('type benutzer1.txt') do (@set /a cnt+  
=1 & echo =%i)>>benutzer2.txt
... oder, meinetwegen etwas lesbarer im Batch
~~~~ Batchschnipsel zum Erzeugen der Benutzer2.txt
echo off 
.....
set /a cnt=0
set be2=.\benutzer2.txt
if exist %be2% del %be2%
for /f "delims=" %%i in ('type benutzer1.txt') do call :writeln "%%i"  
goto next

:writeln
  set /a cnt+=1 
  echo %cnt%=%~1>>%be2%
goto :eof


:next 
:: nur zum Debuggen jetzt anzeigen
type %be2%
::... und weiter im Batch
...
~~~Ende Batchschnipsel zum Erzeugen der Benutzer2.txt

Output (erzeugte Benutzer2.txt:
1=C:\Dokumente und Einstellungen\Administrator\Recent\ 
2=C:\Dokumente und Einstellungen\All Users\Recent\ 
3=C:\Dokumente und Einstellungen\Default User\Recent\ 
4=C:\Dokumente und Einstellungen\LocalService\Recent\ 
5=C:\Dokumente und Einstellungen\MM\Recent\ 
....
57=C:\Windows\Cookies\ 
58=C:\Windows\Prefetch\ 
59=C:\Windows\Temp\ 
60=C:\Windows\Temporary Internet Files\ 
61=c:\windows\system32\config\systemprofile\recent\ 

Wo war das Problem?

Wenn es wieder nicht klappt, melde Dich am Sonntag oder so... morgen mach ich frei...

Biber

P.S. Du schreibst ein überflüssiges Leerzeichen am Ende jeder Zeile beim Erzeugen der "Benutzer1.txt".
Das holt Dich irgendwann später wieder ein... das seh ich jetzt schon face-wink
MM69
MM69 16.10.2005 um 21:22:20 Uhr
Goto Top
Hi, danke dir es klappt jetzt.
"Du schreibst ein überflüssiges Leerzeichen am Ende jeder Zeile beim Erzeugen der "Benutzer1.txt".
Das holt Dich irgendwann später wieder ein... das seh ich jetzt schon " wenn ich das wüsste woher das kommt.*sfg
Bin ja noch auf der suche und bei Benutzer2.txt sind ca 3 leerzeichen pro Zeile. Wie kriege ich dir denn weg face-wink
Biber
Biber 16.10.2005 um 23:45:56 Uhr
Goto Top
Na, MM69,

tasten wir uns mal langsam weiter.. alles an Deinem Plan versteh ich ja auch noch nicht *gg

Also: den ersten Schritt würde ich geringfügig anders schreiben:
::------------snipp MakeMyInis.bat
@echo off & setlocal
:: die erste Zwischendatei... falls nötig. 
:: Machen wir mal aus Gründen der Übersichtlichkeit.
Set "be1=.\benutzer1.txt"  
if exist %be1% del %be1% 
:: ggf Namen und Pfad der %be1% anpassen
:: erstmal das Verzeichnis "c:\Dokumente und Einstellungen" finden  
:: --> in Variable myDocFolder... ist eine Ebene über dem User-Home-Verzeichnis
:: (%HOMEDRIVE%%HOMEPATH% nutzt der Explorer, die sind "immer" gesetzt)  
pushd "%HOMEDRIVE%\%HOMEPATH%\.."  
set "myDocFolder=%cd%"  
popd
FOR /f "tokens=*" %%f IN ('dir /A /D /B "%mydocFolder"') DO (  
	  echo %mydocFolder%\%%f\Recent\>>%be1%
	  echo %mydocFolder%\%%f\Cookies\>>%be1% 
	  echo %mydocFolder%\%%f\Lokale Einstellungen\Verlauf\>>%be1% 
	  echo %mydocFolder%\%%f\Lokale Einstellungen\Temporary Internet Files\>>%be1% 
	  echo %mydocFolder%\%%f\Lokale Einstellungen\Temp\>>%be1%
	  echo %mydocFolder%\%%f\Anwendungsdaten\Microsoft\Office\Zuletzt verwendet\>>%be1% 
	  echo %mydocFolder%\%%f\Lokale Einstellungen\Anwendungsdaten\Microsoft\CD Burning\>>%be1%
	  echo %mydocFolder%\%%f\InstallShield Installation Information\>>%be1%
)

::....Ende Erzeugen erste Zwischendatei (zum Großteil)
goto :eof
.....
::------------snapp MakeMyInis.bat
So finde ich es ein bisschen übersichtlicher.
Wenn das meine Spielwiese wäre, würde ich auch noch die Subfolders "Recent", "Cookies",....
in eine Variable und eine innere FOR-Schleife packen, aber was solls... Nicht wichtig.

Wichtiger: Vor dem ">>" ist KEIN Leerzeichen! (bei Dir war schon eins: " >>").
Und das wurde auch ans Ende der Zeile geschrieben. Laut Anweisung sozusagen *gg.
~~~~~
Nächste Anmerkung:
Dieses hier in deinem Source macht nix sinnvolles, wie Du beim lauten Vorlesen auch selber merkst.
if /i "C:\WINDOWS" == "C:\WINDOWS" goto xp   
if /i "C:\WINNT" == "C:\WINNT" goto winnt   
else goto ende 

Das merkst Du nicht, weil Du unter XP arbeitest (kann nicht anders sein) und er da alles richtig (=ohne sichtbare Fehlermeldung) macht.
Weder die 2. IF-Anweisung noch das "else" kann je erreicht werden.
Und beim "else" gäbe es auch einen Syntax-Fehler (siehe Hilfe: IF /?)
~~~
Aber hier frag ich lieber erstmal nach, was Du da genau versuchst?
Fallunterscheidung NT 4.0 und XP? Oder XP und W2000?... Ist jedenfalls nicht sauber.
Wenn es um die OS-Version geht: Im Bereich <a href= #Batch target="blank"> Batch & Shell</a> ist auch ein GetOSVersion-Tutorial.
~~~
Und wo ich ganz am Schwimmen bin:
Nach welcher Logik/ welchen Kriterien willst Du denn diesen Block [Folders] in deiner *.ini bilden lassen???

Da hab ich offen gestanden nicht begriffen, woher die Infos kommen bzw. was da nun variabel und was konstant ist.

Grüße
Biber
Xaero1982
Xaero1982 04.07.2006 um 09:03:27 Uhr
Goto Top
So,

ich habe 26 *.bat dateien.
Alle haben einen anderen Namen!
An alle soll ein und die selbe Zeile angehangen werden.

Notfalls soll ich diese Zeile auch wieder löschen können.

VBS, Batch was auch immer -> egal

Hat jemand ne Idee ?
.. so das erste geht .. wie kann ich die zeile wieder entfernen?
Biber
Biber 04.07.2006 um 09:19:31 Uhr
Goto Top
Moin Xaero1982,

kommt darauf an, ob Du die 26 *.bat-Dateien über Wildcards einfangen kannst oder namentlich angeben musst.

Über Wildcards:
[Beispiel vom CMD-Prompt aus]
for %i in (c:\meineBats\*.bat) do @echo "REM meine neue Zeile">>c:\meinebats\%i

Über eine Dateiliste der Form Meinebats.lst
;--Inhalt meineBats.lst
c:\temp\meinBat1.bat
d:\xyz\meinBat2.bat
...

for /f %i in (Meinebats.lst) do @echo "REM meine neue Zeile">>%i

~~~~~~~~
Zeile wieder Herauslöschen aus einem/allen der *.bats mit Find /v.

for /f %i "eol=;" in (c:\meineBats\*.bat) do @type c:\meineBats\%i|find /v "REM meineneue Zeile">c:\meinebats\%i

Soweit die ungetestete Skizze.

Gruß
Biber
Xaero1982
Xaero1982 04.07.2006 um 09:51:35 Uhr
Goto Top
Also das erste mit dem eintragen habe ich simpel mit dem anderen Beitrag ausm anderen thread gelöst:

eine Zeile

for %i in (*.bat) do (echo text)>>"%i"

oder nen block

for %i in (*.txt) do copy "%i"+anhang.txt "%i"

So und das mit dem Löschen geht nicht .. "eol=;" syntaktisch an dieser stelle nicht verarbeitbar

find /V ....
find /?
Sucht in einer oder mehreren Dateien nach einer Zeichenfolge.

FIND [/V] [/C] [/N] [/I] "Zeichenfolge" [[Laufwerk:][Pfad]Dateiname[ ...]]  

  /V        Zeigt alle Zeilen an, die die Zeichenfolge NICHT enthalten.
  /C        Zeigt nur die Anzahl der die Zeichenfolge enthaltenden Zeilen an.
  /N        Zeigt die Zeilen mit ihren Zeilennummern an.
  /I        Ignoriert Groß-/Kleinschreibung bei der Suche.
  "Zeichenfolge"               Die zu suchende Zeichenfolge  
  [Laufwerk:][Pfad]Dateiname   Zu durchsuchende Datei(en)

Fehlt der Pfad, so durchsucht FIND von der Tastatur aus eingegebenen Text oder
die Ausgabe des Befehls, der FIND in einer Befehlskette vorangestellt ist.
Biber
Biber 04.07.2006 um 09:56:14 Uhr
Goto Top
Jepp, Xaero,
so geht mir das vor der ersten Kanne Kaffee und mit dem Copy & Pasten...
Die untere FOR_Anweisung sollte natürlich eine FOR /F-Anweisung sein und keine einfache FOR-Anweisung...

Hab ich oben in der Skizze korrigiert.

Sorry
Biber
Xaero1982
Xaero1982 04.07.2006 um 10:00:09 Uhr
Goto Top
for /f %i "eol=;" in (*.bat) do @type %i|find /v "REM TEXT">%i

""eol=;"" ist syntaktisch an dieser Stelle nicht verarbeitbar.
Biber
Biber 04.07.2006 um 10:12:25 Uhr
Goto Top
*grmpf*

Nochmal sorry... jetzt hab ich mich auch ganz verwirren lassen...
Wenn der Parameter "eol=;" funktionieren soll, dann muss es zwar eine "FOR /F"-Anweisung sein.

Hier sind aber sowohl "Eol=;" wie auch Parameter /F Bullshit... hier soll ja wirklich nur die Liste der *.bat-Dateien durchgenudelt werden.

Also ganz banal
for %i in (c:\meineBats\*.bat) do ..[whatever]

*jezz abba erzma ein' dreifachen Kaffee hole*
Xaero1982
Xaero1982 04.07.2006 um 10:18:17 Uhr
Goto Top
rofl ... biber nej...

so for %i in (*.bat) do ...kram von oben

ALLE sind LEER!!!!!!

noch was wie kann ich einen zeilenumbruch einfügen?
der fügt den text genau hinten an die letzte zeile an .. und nicht in eine neue

edit: zeilenumbruch hab ich ... mit "^"
Biber
Biber 04.07.2006 um 13:06:01 Uhr
Goto Top
noch was wie kann ich einen zeilenumbruch einfügen?
der fügt den text genau hinten an die letzte zeile an .. und nicht in eine neue
edit: zeilenumbruch hab ich ... mit "^"

..eine andere Möglichkeit wäre ein zusatzliches "echo."

do ((echo.) & echo "der eigentliche Text")>inneDatei.bat

*ansonsten still bleibe bis das Koffein wirkt*
Xaero1982
Xaero1982 04.07.2006 um 13:33:50 Uhr
Goto Top
Nuja .. das Problem mit dem Löschen besteht noch immer :D