Jump to content
Sign in to follow this  
lefg

Zeilen in einer Textdatei per Batch, CL bearbeiten

Recommended Posts

Hallo Gemeinde,

 

ich habe ein kleines Problem, ich möchte Zeilen einer Textdatei bearbeiten, genauer hinzufügen, entfernen.

 

Das Hinzufügen von Zeilen ein eine Textdatei geschieht mittel Redirector:

echo Hallo World > Dateiname.txt 

legt eine neue Datei an und erzeugt die erste Zeile

echo Hallo World >> Dateiname.txt 

existiert noch keine Datei wird diese angelegt und die erste Zeile geschrieben, sonst wird angehängt

 

Ich habeleider noch keine Möglichkeit entdeckt, direkt einen Eintrag aus einer Textdatei zu entfernen mittels Kommandozeile. M;an könnte versuchen eine for /f-Schleife zu konstruieren, die letztlich die Aufgabe erfüllt, als das Wahre sehe ich es nicht an.

 

Hat jemand eine Idee, einen Tipp?

 

Dank für Aufmerksamkeit und Rat.

 

Edgar

Share this post


Link to post
Share on other sites

Naja ich hätte jetzt kein fertiges Script allerdings hab ich ein paar geschrieben die zum Beispiel eine Syslogdatei filtern und das Ergebnis in eine neue schreiben...

 

Man könnte das mit ein wenig VBScript Kenntnisse so ändern dass nur bestimmte nicht geschrieben werden...

Share this post


Link to post
Share on other sites

Ich möchte das Teilziel näher beschreiben: Meldet sich ein User an einen Client an, soll der Rechnername in eine Textdatei geloggt werden, meldet sich der User wieder ab, soll der Eintrag aus der Datei entfernt werden.

 

Möglicherweise bin ich mit der Idee des Ein- und Austragens in und aus einer datei auf dem verkehrten Schiff. Vieleicht sollte ich für jeden Client eine einzelne Datei mit dessen Namen bei der Anmeldung erzeugen, bei der Abmeldung wieder löschen.

 

Mit

dir R201*.txt  >> Spool%time%.txt 

geht das in weitere Textdatei, deren Inhalt, Zeilen von einer for /f-Schleife zur Bedingung ausgewertet werden.

Share this post


Link to post
Share on other sites

Hallo Edgar.

 

Habe ich da jetzt was falsch verstanden, oder meintest Du vielleicht sowas?

 

@echo off
findstr /V /C:%1 %2 > ziel.txt
del %2
ren ziel.txt %2

 

Das filtert Dir eine übergebene Zeichenkette aus einer Textdatei.

 

LG

Marco

Share this post


Link to post
Share on other sites

Hallo Marco,

 

ich bin nicht sicher ob ich das blicke, deshalb beschreibe ich aml genauer.

 

Nehmen wir einen Pool (Klassenraum) mit 30 Clients. Die User melden sich an, pro Client wird ein Eintrag in einer Textdatei erzeugt.

[R214]
R214-PC01
R214-PC02
R214-PC05
......

Nun logt sich der User an PC01 aus, der Eintrag muss dann aus der Datei entfernt werden.

[R214]
R214-PC02
R214-PC05
......

Das müsste idealerweise aber auch schnell gehen.

 

Mich würde aber interessieren, ob es im cmd-Bereich etwas gibt, mit dem man sowas machen kann, einen geeigneten Parser.

Share this post


Link to post
Share on other sites

Ja, genau das macht die kleine Batch-Datei von mir.

 

Du kopierst sie und speicherst sie z.B. unter dem Dateinamen KillAccount.bat.

 

Wenn Du sie nun wie folgt aufrufst ...

 

C:\>KillAccount R214-PC03 Accounts.txt

 

... dann passiert folgendes. Innerhalb der Batchdatei wird findstr aufgerufen.

 

R214-PC03 ist der erste übergebene Parameter und ist somit %1.

Accounts.txt ist der zweite Parameter und somit %2 in der Batchdatei.

 

findstr durchsucht jetzt die Datei Accounts.txt und gibt alle Zeilen aus, die dem

Suchparameter %1 nicht entsprechen. Die Ausgabe leite ich in eine temporäre

Datei ziel.txt, in welcher jetzt alle Rechner sind, außer R214-PC03.

 

Jetzt wird Accounts.txt nur gelöscht und ziel.txt in Accounts.txt umbenannt.

 

Wobei ich das loggen von Anmeldungen lieber mittels GPO steuere und nicht

mit einer Batch-Datei.

 

LG

Marco

Share this post


Link to post
Share on other sites

@echo off
findstr /V /C:%1 %2 > ziel.txt
del %2
ren ziel.txt %2

Was enthalten die Übergabeparameter %1 und %2 ?

 

Gemäss Synopsis wird mit /C: Zeichenkette geschaltet. /V bestimmt die Übertragung der nicht aufgefundenen Zeichenketten.

 

In %2 steht wohl der Name der Quelldatei, denn del ist ein Dateibehandlangsbefehl, er löscht die Quelldatei. Am Schluss erhält die Zieldatei den Namen der Quelldatei.

 

%1 enthält also den Rechnernamen, %2 den Namen der Pooldatei.

 

Das ist eine gute Idee, mein Lieber; ich danke dir.

 

Gruß

 

Edgar

Share this post


Link to post
Share on other sites

Hatte gerade wohl meinen letzten Beitrag editiert, als Du geantwortet hast.

 

Hast aber Recht, genau so läuft das.

 

Danke für das Lob.

 

LG

Marco

Share this post


Link to post
Share on other sites
Wobei ich das loggen von Anmeldungen lieber mittels GPO steuere und nicht mit einer Batch-Datei.
Hallo Marco,

 

erklärst du mir das bitte genauer?

 

Dank & Gruß

 

Edgar

Share this post


Link to post
Share on other sites

Hallo Edgar,

 

ich erstelle einfach eine neue Überwachungsrichtlinie und aktiviere Anmeldereignisse

Erfolgreich überwachen. Dann werden mir die Anmeldeereignisse per GPO

schön geloggt.

 

LG

Marco

Share this post


Link to post
Share on other sites
Dann werden mir die Anmeldeereignisse per GPO

schön geloggt.

Hallo Marco,

 

dann würden die Ereignisse im Event.log stehen, nicht wahr? Das müsste ausgewertet werden, oder gibt es da eine andere Möglichkeit?

 

Wie, wo kann eine neue Überwachungsrichtlinie erstellt werden?

Share this post


Link to post
Share on other sites

Hi Edgar, habe den Thread aus dem Auge verloren, sorry. :(

 

Ja, die Ereignisse würden dann selbstverständlich im EventLog auftauchen, aber

das ist m. E. kein Nachteil, sondern eher ein Vorteil, weil die Logs genau dafür

gedacht sind und es somit die konformste Realisierung eines Login-Loggings

darstellt.

 

Die Auswertung der Eventlogs kann man auch über Kommandozeile sehr einfach

durchführen und sich so für kleine Netze auch selbst eine Monitoring-Lösung

schaffen. Ich mache das mit wmic, lasse mir HTML-Seiten generieren, speichere

diese in einen Ordner mit IIS - Zugriff und kann mir so dann mittels Browser

an jedem Rechner im Netz die Logs anschauen.

 

Als Beispiel suche ich jetzt einmal die logischen Laufwerke, mit all ihren Daten

und lasse das Ergebnis in eine HTML-Seite fließen.

 

C:\> wmic logicaldisk list full /format:htable > LogDisk.htm

 

Oder hier schaue ich mal nach Events im Log Sicherheit und lasse mir alle Events

anzeigen, die ab dem 06.02.2006 erstellt wurden. Letzteres in einer verkürzten

Darstellung, was ich mittels des Schalters BRIEF erreiche.

 

C:\> wmic ntevent where "LogFile='Security' and TimeGenerated>'20060206'" list brief /format:htable > Events.htm

 

Oder hier ermittel ich z.B. die Taktfrequenz eines Prozessors anhand einer

festen Pfadvorgabe.

 

C:\> wmic path Win32_Processor where "DeviceID='CPU0'" get CurrentClockSpeed

 

Kannst Dir aber auch ganze Informationen zum OS, Computersystem, oder was

auch immer holen und das gerne auch Remote. Hier folgt jetzt ein Beispiel,

wo ich remote auf meinen DC zugreife und mir die Infos zum OS hole.

 

C:\> wmic /node:VOTAN os list full /format:htable > votanOS.htm

 

Wobei VOTAN hier mein DC ist, welchen ich unter /node spezifiziert habe.

 

wmic ist also schon ein nettes Tool um mal eben fix im Netzwerk was

abzufragen.

 

Was die Überwachungsrichtlinie betrifft so erstelle ich diese mittels der

gpmc.msc. Unter Gruppenrichtlinienobjekte erstelle ich dann ein neues GPO

mit den jeweiligen Anpassungen, im aktuellen Fall also unter:

 

Computerkonfiguration
|
Windows-Einstellungen
	|
	Sicherheitseinstellungen
		|
		Lokale Richtlinien
			|
			Überwachungsrichtlinie

 

... und passe dort den Punkt Anmeldeereignisse an.

 

LG

Marco

Share this post


Link to post
Share on other sites
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...