Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
GELÖST

Batch die eine vorhande .reg nach einem eintrag durchsucht

Frage Entwicklung Batch & Shell

Mitglied: WhiteLion

WhiteLion (Level 1) - Jetzt verbinden

20.04.2008, aktualisiert 18:05 Uhr, 3744 Aufrufe, 11 Kommentare

hallo,

leider konnte ich trotz intensiver suche keine lösung für mein problem finden. was nciht zuletzt daran liegt, dass der for befehl für mich (trotz bemühungen) recht unverständlich ist. mein problem:
ich habe meine batch-routine so weit, das im %temp%-verzeichnis eine datei namens "ausgelesen.reg" geschrieben wird, in dieser befinden sich registrierungsschlüssel. ich möchte gerne, dass wenn der schlüssel mit dem namen "Heureka" vorhanden ist, meine batchdatei beendet wird. ist er allerdings nicht vorhanden, sollte eine weiter batchdatei namens "add.bat" die ebenfalls im %temp% liegt ausgeführt wird.

leider konnte ich nix passendes finden und bedanke mich jetzt schonmal für die bemühungen!

LG jens
Mitglied: 54487
20.04.2008 um 13:18 Uhr
findstr ist dein Freund. Hilfe in der Konsole mit findstr /?
Bitte warten ..
Mitglied: WhiteLion
20.04.2008 um 13:43 Uhr
findstr ist dein Freund. Hilfe in der
Konsole mit findstr /?


also ich habs getest und bin noch nciht wirklich weiter gekommen. obwohl die datei ausgelesen.reg im temp vorhanden ist, und er laut promt dort auch sucht, findet er sie nicht:

c:\test>findstr "Heureka" %temp%/ausgelesen.reg
FINDSTR: C:\DOKUME~1\ADMINI~1\LOKALE~1\ausgelesen.reg kann nicht geöffnet werden. (ist aber da!!!)

weiterhin stelle ich mir die frage wie ich eine ifschleife gestallte, wenn der wert da ist, dann exit, falls nicht, andere batch ausführen.
Bitte warten ..
Mitglied: 54487
20.04.2008 um 13:52 Uhr
Wenn du den Slash hinter %temp% in einen Backslash änderst und den Pfad in Gänsefüßchen setzt, funktioniert dein Beispiel vielleicht.

01.
@echo off & setlocal 
02.
findstr /i "heureka" "%temp%\ausgelesen.reg"  && goto :eof 
03.
echo heureka wurde nicht gefunden, hier geht es weiter 
04.
.. 
05.
..
Wenn "heureka" gefunden wurde, wird die Batchdatei beendet (:eof ist eine vordefinierte Sprungmarke für das Dateiende)
Bitte warten ..
Mitglied: WhiteLion
20.04.2008 um 14:23 Uhr
aha, ok ... jetzt bin ich fast zufrieden ... also wenn "eof" automatisch zum dateiende springen soll ohne dass weitere befehle ausgeführt werden, klappts bei mir nicht....
ich habe jetzt folgendes:

@echo off & setlocal
regedit /E %temp%/ausgelesen.reg "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run"
;reg export HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run %temp%/ausgelesen.reg
findstr /i "Heureka" "%temp%\ausgelesen.reg" && goto :eof
add.bat
del %temp%\add.bat
del %temp%\ausgelesen.reg
exit

add.bat wird in jedem fall ausgeführt, auch wenn heureka vorhanen ist.... das soll ja nicht so sein. am besten wäre auch wenn der teil anch add.bat (also das löschen der dateien) immer ausgeführt wird, auch wenns vorhanden ist
Bitte warten ..
Mitglied: 54487
20.04.2008 um 14:28 Uhr
Ich hatte was zum Slash bzw. Backslash geschrieben. In einer Pfadangabe hat der Slash "/" nichts zu suchen. Du hast die Datei wieder mit dem "/" erzeugen lassen.
Bitte warten ..
Mitglied: WhiteLion
20.04.2008 um 14:33 Uhr
@echo off & setlocal
regedit /E %temp%\ausgelesen.reg "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run"
;reg export HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run %temp%\ausgelesen.reg
findstr /i "Heureka" "%temp%\ausgelesen.reg" && goto :eof
add.bat
del %temp%\add.bat
del %temp%\ausgelesen.reg
exit

so besser? oder gar keinen slash ???
Bitte warten ..
Mitglied: 54487
20.04.2008 um 14:37 Uhr
Wenn du die Zeile mit dem ";" am Anfang noch rausschmeißt und die Pfade in "" setzt, wird es langsam.

01.
findstr /i "Heureka" "%temp%\ausgelesen.reg" && goto :ende  || goto :weiter 
02.
 
03.
:weiter 
04.
rem hierher bei Nichtvorhandensein 
05.
.. 
06.
.. 
07.
:goto :eof 
08.
 
09.
:ende 
10.
rem hierher wenn gefunden
Bitte warten ..
Mitglied: WhiteLion
20.04.2008 um 15:02 Uhr
@echo off & setlocal
regedit /E %temp%\autoloc.reg "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run"
regedit /E %temp%\autouser.reg "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run"
findstr /i "heureka" "%temp%\autoloc.reg" && goto :ende || goto :weiter
:weiter
findstr /i "Heureka" "%temp%\autouser.reg" && goto :ende || goto :weiter2
:weiter2
add.bat
del %temp%\add.bat
del %temp%\autoloc.reg
del %temp%\autouser.reg
:ende
del %temp%\add.bat
del %temp%\autoloc.reg
del %temp%\autouser.reg
exit


ich habs noch etwas erweitert.... aber leider werden die dateien autoloc.reg und autouser.reg nicht gelöscht

außerdem wird die add.bat in jedem fall ausgeführt, auch wenn der eintrag schon vorhanen!

ist es sonst schon richtig ?

EDIT: wenn ich per commandline "del %temp%\autouser.reg" eingebe wirds gelöscht! warum also in meiner batch nicht ?
Bitte warten ..
Mitglied: bastla
20.04.2008 um 16:20 Uhr
Hallo WhiteLion!

Vorweg: Auch wenn's diesmal nicht an den fehlenden Anführungszeichen liegt, würde ich empfehlen, diese im Zweifelsfall trotzdem zu verwenden.

Der Aufruf der "add.bat" ohne vorangestelltes "call" übergibt die Steuerung an "add.bat" - der Rest des aktuellen Batches wird daher gar nicht ausgeführt.

Eine auf das Wesentliche reduzierte Fassung könnte so aussehen:
01.
@echo off & setlocal 
02.
regedit /E "%temp%\autoloc.reg" "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" 
03.
regedit /E "%temp%\autouser.reg" "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" 
04.
findstr /i "heureka" "%temp%\autoloc.reg" && goto :ende 
05.
findstr /i "Heureka" "%temp%\autouser.reg" && goto :ende 
06.
call add.bat 
07.
:ende 
08.
del "%temp%\add.bat" 
09.
del "%temp%\autoloc.reg" 
10.
del "%temp%\autouser.reg"
Grüße
bastla

P.S.: Falls Du Dich fragst, warum der Batch-Code bei nachdenker, im Gegensatz zu Deinem, so schön formatiert ist: http://www.administrator.de/index.php?faq=20#toc26
Bitte warten ..
Mitglied: paulepank
20.04.2008 um 17:52 Uhr
Hallo in die Runde,

trotz aller freundlichen Hinweise wird das Wort Heureka nicht gefunden werden.
Grund: regedit /e exportiert in das Unicode-Format.
Es muß deshalb der Schalter /a verwendet werden.

Besser wäre hier wahrscheinlich auch die Verwendung von reg.exe

zb.

01.
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run /s | findstr /i "heureka"
und dann den Errorlevel auswerten. Dann kann man sich zumindest die reg-Datei sparen.

cu paulepank
Bitte warten ..
Mitglied: bastla
20.04.2008 um 18:05 Uhr
Hallo paulepank!

Danke für den Hinweis - die Verwendung von "regedit" war mir gar nicht aufgefallen ...

Ein genereller Workaround für die Unicode-Problematik wäre hier (da ohnehin in eine Datei exportiert wird) relativ einfach einsetzbar - eine neuerliche Ausgabe der Datei erfolgt nämlich im ASCII-Format, daher ginge es auch so:
01.
type "%temp%\autoloc.reg"|findstr /i "heureka" && goto :ende
Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Dateinamen mit Batch-Datei ändern - Problem (9)

Frage von fffffuuuuuuuhhhh zum Thema Batch & Shell ...

Batch & Shell
Batch als Dienst bei Systemstart ohne Anmeldung ausführen (3)

Tipp von tralveller zum Thema Batch & Shell ...

Batch & Shell
Batch mit forfiles - Dateiendung filtern - Dateien löschen (2)

Frage von mschaedler1982 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(3)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Heiß diskutierte Inhalte
Exchange Server
Exchange 2016 Standard Server 2012 R2 Hetzner Mail (41)

Frage von Datsspeed zum Thema Exchange Server ...

Windows 7
gelöst Lokales Adminprofil defekt (25)

Frage von Yannosch zum Thema Windows 7 ...

Off Topic
gelöst Fachzeitschriften als E-Book oder hardcoded? (11)

Frage von KowaKowalski zum Thema Off Topic ...

Windows 10
Windows Store Apps ohne Windows Store installieren (10)

Frage von keefien zum Thema Windows 10 ...