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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 13260
Url: https://administrator.de/contentid/13260
Ausgedruckt am: 22.11.2024 um 16:11 Uhr
26 Kommentare
Neuester Kommentar
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
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
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
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
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]
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]
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!
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!
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")
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")
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.
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.
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?
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?
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.
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.
@MM69
...bestimmt wirst Du schlau draus... ich hab ihn ja auch nach dem dritten Lesen verstanden
...bestimmt wirst Du schlau draus... ich hab ihn ja auch nach dem dritten Lesen verstanden
@MM69
Versteh ich nicht.
Das Erzeugen der "Benutzer2.txt" ist doch ein Oneliner vom Prompt aus...??
... oder, meinetwegen etwas lesbarer im Batch
Output (erzeugte Benutzer2.txt:
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
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
~~~~ 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
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
"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
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:
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.
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
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
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
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
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
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 ....
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.
*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*
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*
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 "^"
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*