Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator Biber am 03.02.2010 um 20:10:06 Uhr
Verschoben von "Tools & Utilities" nach "Batch & Shell", auf "Erledigt" und "Geschlossen" gesetzt.

gelöst Eintrag aus div Datei auslesen und in eine weitere Datei schreiben

Mitglied: 17467

17467 (Level 1)

20.01.2007, aktualisiert 03.02.2010, 5318 Aufrufe, 16 Kommentare

Hallo,

ich habe einen Ordner mit vielen Reg exporten und möchte jetzt 4 Werte auslesen und in eine weitere Datei schreiben.
Erste Zeile soll der Dateiname sein und dann die Werte usw ..

gruß ins WE
Mitglied: Dani
20.01.2007 um 12:19 Uhr
Hi,
wäre vielleicht gut, wenn du mal dein Vorhaben genauer erklärst.

4 Werte auslesen und in eine weitere Datei schreiben.
Sprich an Han des Schlüsselnamens? Ja - Und was machst du 2 oder 3 Schlüssel den gleichen Namen haben?! Nein - Wie möchtest du dann abfragen??


Gruß
Dani
Bitte warten ..
Mitglied: 17467
20.01.2007 um 12:44 Uhr
okay ...

ich habe einen Ordner mit Regestry Exporten.

z.b. c:\reglog dort gibt es 100 Dateien mit %computername%.reg

in dieser Datei steht ein Eintrag z.b

"enablesecuritysignature"=dword:00000000

diesen Wert und 3 andere möchte ich überprüfen ob am Ende eine 1 oder eine Null steht, wenn eine 1 steht, möchte ich den Namen der Datei in eine andere schreiben bzw ergänzen.

Somit kann ich überprfüfen, wo der falsche Eintrag an welchem Computer eingetragen ist.

Wir haben zwar AD, aber ich kann es nicht pflegen, habe aber Adminrechte ...

Das ganze kommt in die Start Batch vom DomainController.
Und bei jedem Start des PCs wird mir der Eintrag aktuell ausgelesen.

gruß
Bitte warten ..
Mitglied: Dani
20.01.2007 um 13:00 Uhr
Hi,
Ok...also so müsste es gehen!

01.
@ECHO off 
02.
::Kompletter Pfad zu dem REG-Ordner 
03.
SET dir_src=C:\te tes\assa      
04.
 
05.
::TXT-Datei, in der die Dateinamen gespeichert werden soll 
06.
SET file=asdf 
07.
 
08.
FOR /f %%a IN ('dir /b "%dir_src%"') DO ( 
09.
     FOR /f "skip=3 delims=: tokens=2,3* " %%b IN ('type "%dir_src%\%%a"') DO ( 
10.
          IF "%%b" == "00000001" ECHO %%a >> "C:\test\%file%.txt" 
11.
12.
)
Leider habe ich es nicht getestet. Sry...


Gruß
Dani
Bitte warten ..
Mitglied: bastla
20.01.2007 um 13:38 Uhr
Hallo ranjid!

Basierend auf Dani's Ansatz hätte ich folgendes anzubieten

01.
@echo off & setlocal 
02.
::Kompletter Pfad zu dem REG-Ordner 
03.
set dir_src=D:\Regtest 
04.
 
05.
::TXT-Datei, in der die Dateinamen gespeichert werden soll 
06.
set file="D:\RegTest\RegCheck.txt" 
07.
if exist %file% del %file% 
08.
 
09.
for %%a in ("%dir_src%\*.reg") do for /f "skip=3 delims=" %%b in ('type "%%a"') do call :ProcessLine "%%a" "%%b" 
10.
goto :eof 
11.
:ProcessLine 
12.
set key=enablesecuritysignature 
13.
set val=00000001 
14.
echo %2 | findstr /i /C:"%key%" && echo %2 | findstr /C:"%val%" && echo %~n1;%key% >> %file% 
15.
:: 
16.
set key=NoInternetOpenWith 
17.
set val=00000001 
18.
echo %2 | findstr /i /C:"%key%" && echo %2 | findstr /C:"%val%" && echo %~n1;%key% >> %file% 
19.
:: 
20.
... 
21.
... 
22.
...
Für jeden Key, den Du abfragen möchtest, müsstest Du einen Block wie oben in den beiden Beispielen nach ":ProcessLine" erstellen. Die Formatierung des Ergebnisses mit ";" als Trennzeichen erlaubt zB den Import in Excel - so wird's etwas übersichtlicher.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
20.01.2007 um 14:10 Uhr
...ich weiß' nicht...das wäre mir zuviel Heckmeck für diese Aufgabe.

Ich würde vom CMD-Prompt aus abfeuern...
01.
findstr /i "enablesecuritysignature" z:\meine100RegFiles\*.reg|findStr "00000000"  
02.
test.reg:"enablesecuritysignature"=dword:00000000
...dann hätte ich alle Rechner mit einem 0-Eintrag. Oder ich fasse in eine Ergebnisdatei nacheinander alle gesuchten Werte zusammen:
findstr /i "enablesecuritysignature" z:\meine100RegFiles\*.reg >>alleWerte.txt
findstr /i "SignatureIsUgly" z:\meine100RegFiles\*.reg >>alleWerte.txt
...
etc...

Natürlich könnte ich diese ganzen FindStr's noch in eine FOR -Anweisung packen, wenn es sich lohnt..

Gruß
Biber
Bitte warten ..
Mitglied: 17467
20.01.2007 um 19:02 Uhr
Hallo Biber,

ich habe also die 100 Files und möchte in jeder Datei gucken, ob in dem 00000000 String eine 1 gesetzt ist, wenn dann möchte ich den Namen der Datei ( des Computer, der steht ja als Dateinamen ) in eine weitere Datei, dort gucke ich rein und überprüfe damit, ob es ein System gibt welches einen verkehtren Eintrag hat.
Bitte warten ..
Mitglied: 17467
20.01.2007 um 19:28 Uhr
Hallo Bastla,

hab mal den del rausgenommen, schreibt aber nichts .... es passiert zwar was, kommt aber keine text Datei ...

großes EDIT ...

meine Test haben alle den passenden Wert gehabt, also muss ich den Wert mal ändern und es klappt !!!

super !!!

Jetzt kann das Anmeldescript den Reg-Eintrag exportieren und ich gucke einmal am Tag drüber, ob ein Wert nicht richtig ist.

Zusätzlich ist es eine Kontrolle, da dieser Wert aus mit noch unbekannten Gründen geändert wird. Und ich kan jetzt genau den Tag sehen wann diese Wert wieder anderes ist.
Bitte warten ..
Mitglied: 17467
20.01.2007 um 19:45 Uhr
kleines edit

die Datei in der die Ergebnisse stehen soll noch mit im Dateinamen das Datum stehen, geht das ?
Bitte warten ..
Mitglied: bastla
20.01.2007 um 21:22 Uhr
Hallo ranjid!

Ändere die "set file="-Zeile auf
01.
set file="D:\RegTest\<b>%date:~6,4%-%date:~3,2%-%date:~0,2%-</b>RegCheck.txt"
Grüße
bastla
Bitte warten ..
Mitglied: 17467
20.01.2007 um 22:46 Uhr
sieht auch gut aus, weil das Datum auch richtig angezeigt wird !!!
Bitte warten ..
Mitglied: Biber
21.01.2007 um 12:54 Uhr
Nur um zu zeigen, dass es auch mit einem (formatierten) Einzeiler geht:

01.
::--- snipp RegsAuswert.bat 
02.
@for %%x in ("EnableSecuritysignature.=dword:00000001"^ 
03.
            "RequireSecuritySignature.=dword:00000001"^ 
04.
            "OpenInternetWith.=dword:00000001"^ 
05.
            "EnablePlainTextPassword.=dword:00000001") do @( 
06.
    for /f %%i in ('findstr /im /R "%%x" c:\reglogs\*.*') do @echo %%~ni %%x 
07.
    )
...liefert, wenn er über die Dateien in c:\Reglogs schrapelt, folgenden Beispiel-Output bei mir:
01.
$cmd$RegsAuswert.bat 
02.
 
03.
compi15 "EnableSecuritysignature.=dword:00000001" 
04.
compi18 "EnableSecuritysignature.=dword:00000001" 
05.
compi21 "EnableSecuritysignature.=dword:00000001" 
06.
compi30 "EnableSecuritysignature.=dword:00000001" 
07.
compi16 "RequireSecuritySignature.=dword:00000001" 
08.
compi20 "RequireSecuritySignature.=dword:00000001" 
09.
compi24 "RequireSecuritySignature.=dword:00000001" 
10.
compi28 "RequireSecuritySignature.=dword:00000001" 
11.
compi12 "OpenInternetWith.=dword:00000001" 
12.
compi17 "OpenInternetWith.=dword:00000001" 
13.
compi22 "OpenInternetWith.=dword:00000001" 
14.
compi27 "OpenInternetWith.=dword:00000001"
Wenn ich diese Info ohne das (erläuternde) %%x, also den Suchstring ausgeben will, kann ich das letzte %%x am Ende ja weglassen.
Und den ganzen Krempel in die neue Zeitstempel-Datei leiten ginge mit:
RegsAuswert >D:\RegTest\%date:~6,4%-%date:~3,2%-%date:~0,2%-RegCheck.txt"

Denke, die "Massen"-Verarbeitung über FindStr-mit-Wildcards ist ein Vielfaches schneller als die Nachbildung per FOR-Anweisungen.

Und für mich ist der Einzeiler immer noch les- und wartbar. *gg

Grüße
Biber
Bitte warten ..
Mitglied: bastla
21.01.2007 um 17:38 Uhr
@Biber

Sehr schöne Lösung.

Hinsichtlich Wartbarkeit: An Stelle der direkten Angabe könnten die Suchstrings bei wachsendem Umfang ja auch aus einer Textdatei kommen (ohne den "One-Liner-Status" zu beeinträchtigen ).

Denke, die "Massen"-Verarbeitung über FindStr-mit-Wildcards ist ein Vielfaches schneller als die Nachbildung per FOR-Anweisungen.

Full ACK. Bei mir da oben war's ein typischer Fall von Betriebsblindheit: "findstr" verwende ich praktisch nur, um irgendwelche Ausgabelisten einzudampfen - die "eigentliche" Funktionalität ("Suchen von Dateien nach Inhalt") hatte ich schon ganz verdrängt.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
21.01.2007 um 20:09 Uhr
Danke, bastla.

"Hinsichtlich Wartbarkeit": ein FULL ACK von mir zurück.

Wo ich doch sogar schon bei simplen Batch-Dateien immer lamentiere, doch bitte Daten und Code zu trennen...

Wenn der Schnipsel bei mir "produktiv" wäre, hätte er zwei Parameter:
(1) Name der Suchstring-Datei
(2) QuellDir/evtl. Wildcards der zu durchsuchende Dateien.

Also bestünde sinngemäß aus der Zeile:
01.
::--- snipp RegsAuswert-mit-Param.bat 
02.
@for /f %%x in (%1) do @ for /f %%i in ('findstr /im /R "%%x" %2') do @echo %%~ni %%x
wo bei Parameter %1 eine Datei "Suchwerte.txt" dieser Form wäre:
01.
::--- snipp Suchwerte.txt 
02.
EnableSecuritysignature.=dword:00000001 
03.
RequireSecuritySignature.=dword:00000001 
04.
OpenInternetWith.=dword:00000001 
05.
EnablePlainTextPassword.=dword:00000001
... wobei (hab ich vorhin vergessen zu erwähnen) das Anführungszeichen im Suchstring für den FindStr.exe-Aufruf durch einen "." ersetzt werden muss.

Ist ungetestet, weil... ich glaube nicht, dass ich mir dafür einen Batch schreiben würde...

Grüße
Biber
Bitte warten ..
Mitglied: 17467
21.01.2007 um 20:32 Uhr
ich will ja nicht stören .... ;>))

aber könnt ihr die Schnipsel mal zusammen fügen, damit ich das erkennen kann ...

thanks ....
Bitte warten ..
Mitglied: Biber
21.01.2007 um 20:48 Uhr
Moin ranjid,

nimm aus meinem vorletzten Kommentar den Schnipsel "Regsauswert.bat", Copy&Paste den in eine gleichnamige Datei und passe die Suchstrings und den Pfad "c:\Reglogs\*.*" an.
- Oder-
Lege Dir eine Textdatei "Suchwerte.txt" an wie im letzten Posting und kopiere die eine Zeile "RegsAuswert-mit.Param.bat" in eine *.bat-Datei.

im 2. Fall aufrufen mit "Regsauswert.bat D:\einPfad\Suchwerte.txt D:\einpfad\DerRegDateien\*.*".

Mehr Hexenwerk ist nicht dabei.

Gruß
Biber
Bitte warten ..
Mitglied: bastla
21.01.2007 um 20:53 Uhr
... und vielleicht noch die Umleitung der Ausgabe dazu, also Aufruf (für die letzte Variante):
01.
Regsauswert.bat D:\einPfad\Suchwerte.txt D:\einpfad\DerRegDateien\*.*  > D:\nocheinPfad\%date:~6,4%-%date:~3,2%-%date:~0,2%-RegCheck.txt
Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
VB for Applications

PDF Datei auslesen und per VBA in Excel schreiben

gelöst Frage von Julian8990VB for Applications3 Kommentare

Hallo zusammen! Ich bin auf folgenden Threat gestoßen, und konnte auch schon einige Erfolge erzielen! Mein Problem ist ein ...

Batch & Shell

Dateinamen mit vbs auslesen und in eine TXT Datei schreiben

gelöst Frage von KeiosIDBatch & Shell5 Kommentare

Hallo, ich hoffe mal, das ist das richtige Unterforum. Nach diversen suchen und Hilfe aus einem Windows Scripting Buch ...

Windows Systemdateien

Registry-Schlüssel per Batch auslesen und in Datei schreiben

gelöst Frage von PhilzipWindows Systemdateien9 Kommentare

Hallo zusammen, ich habe mir vorhin einen Befehl gebastelt, der die Installierte Version von NET Framework auslesen und in ...

Batch & Shell

Batch Datei: Alte Dateien in div. Unterordnern löschen

gelöst Frage von simonsaysBatch & Shell11 Kommentare

Hallo zusammen Ich habe einen Ordner "xxx" in diesem Ordner sind Unterordner "yyy" und "zzz" - xxx yyy zzz ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 16 StundenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 16 StundenSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 1 TagDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 1 TagSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
Exchange Server
Exchange Postfach Einbindung Betriebs-rat -Arzt, Bewerbung .
gelöst Frage von YellowcakeExchange Server23 Kommentare

Hey ich habe da mal eine Denksport Aufgabe bekommen Genutzt wird ein Exchange Server 2010. hier gibt es den ...

Windows Server
Downgrade von Windows Server 2016 auf 2012 - Wie vorgehen?
Frage von EstefaniaWindows Server13 Kommentare

Guten Ich habe eine Frage an Erfahrene unter euch. Durch einen InPlace Upgrade wurde Windows Server 2012 auf die ...

Datenschutz
Telematikinfrastruktur Erfahrungsaustausch
Frage von MOS6581Datenschutz12 Kommentare

Moin, unter meinen Kunden befinden sich auch einige Ärzte, welche sich künftig mit der Telematikinfrastruktur-Geschichte der Gematik herumärgern dürfen. ...

Windows Server
Delgegierte OU via RDP verwalten - Objektverwaltung zuweisen
gelöst Frage von TOAOICEWindows Server12 Kommentare

Hallo, ich habe folgendes Problem. Ich möchte in meiner Domäne (Server2016), einer Gruppe (OUAdmin) Berechtigungen auf die OU Test ...