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

Daten per Batch auslesen und weiterverarbeiten

Frage Entwicklung Batch & Shell

Mitglied: Zendara

Zendara (Level 1) - Jetzt verbinden

10.06.2010, aktualisiert 13:48 Uhr, 6811 Aufrufe, 5 Kommentare

Hallo,

ich versuche gerade per Batch, auf mehreren Computer (Win2000, WinXP) den aktuellen Speicherort der Outlook.pst auszulesen. Der Speicherort der PST Dateien ist nicht immer, im dafür vorgesehenen Ordner gespeichert.
Mit Office 2007 funktioniert der Auslesevorgang ohne Probleme.
01.
reg query "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Common\Open Find\Microsoft Office Outlook\Settings\Outlook-Datendatei erstellen oder öffnen\File Name MRU" /v Value >>"X:\Protokoll\pst_reg_%username%.txt"
aber bei den Rechnern mit Office XP ist der Reg Pfad immer an unterschiedlichen Orten gespeichert zb.:

"HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\8b9651257708ab4da0d8d43cd315ee4d
Der letzte Teil ändert sich immer (8b9651257708ab4da0d8d43cd315ee4d) und müsste als Variable ausgelesen und verarbeitet werden.


Um an diesen Eintrag zu kommen, verwende ich folgend Auszug.

01.
set regkey=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit 
02.
set keyname=LastKey 
03.
set regtemp=c:\reg_temp_Office_Pfad.txt 
04.
reg query "%regkey%" /v %keyname% >>%regtemp%
Der daraus entstandene Text:
__

! REG.EXE VERSION 3.0

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit
LastKey REG_SZ Arbeitsplatz\HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\8b9651257708ab4da0d8d43cd315ee4d


Nun würde ich gerne nur den letzten Teil (8b9651257708ab4da0d8d43cd315ee4d) auslesen und als Variable weitergeben.

01.
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\%HIER_REIN%" /v 001e6700 >>"X:\Protokoll\pst_reg_%username%.txt"
Ich glaub das hat irgendetwas mit dem for Befehl zutun, bin da leider zu keinem Sinnvollen Ergebnis gekommen.


Mit freundlichen Grüßen
Zendara
Mitglied: LotPings
10.06.2010 um 14:23 Uhr
Hallo Zendara,

so ganz kann ich nicht nachvollziehen warum du über den Lastkey von Regedit gehst, würde das denn auf anderen Computern funktionieren?

Was passiert denn wenn du per brute force alle Subschlüssel von "..Profiles\Outlook \.." mit :
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook" /s |findstr /I "001e6700"
nach dem Value "001e6700" durchsuchst?

Gruß
LotPings
Bitte warten ..
Mitglied: Zendara
10.06.2010 um 15:18 Uhr
Hallo LotPings danke für die Antwort.

Stimmt das mit LastKey hätte nicht funktioniert und ging nur die dem einem Rechner bis zum Neustart.

Der Vorschlag von dir funktioniert wunderbar!

01.
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook" /s |findstr /I "    001e6700" >>X:\test.txt
Das Ergebnis:
01.
    001e6700	REG_SZ	C:\Dokumente und Einstellungen\%USERNAME%\Lokale Einstellungen\Anwendungsdaten\Microsoft\Outlook\Outlook.pst
Ich hat zwar jetzt je nach PC Doppeleinräge mit unterschiedlichen Pfaden, aber dem Problem komme ich auch noch auf die Spur.

Herzlichen Danke für deine Hilfe
Zendara
Bitte warten ..
Mitglied: LotPings
10.06.2010 um 16:31 Uhr
Schön wenns klappt,

du brauchst eigentlich keine Temporären Dateien wenn du die gefundenen Werte sowieso weiterverarbeiten willst.

01.
Set "RegKey=HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook" 
02.
For /f "tokens=1,2,*" %%A in ( 
03.
  'reg query "%RegKey%" /s ^|findstr /I "    001e6700" ' 
04.
) do ( 
05.
  Echo Pfad gefunden: %%C 
06.
  Rem mach hier was auch immer mit dem Pfad 
07.
)
Gruß
LotPings
Bitte warten ..
Mitglied: Biber
10.06.2010 um 18:19 Uhr
Moin Zendara und LotPings,

zwei kleine Anregungen hätte ich noch zu dem von LotPings geposteten Schnipsel.

1) Unter dem Registry-Zweig "HKCU\........Subsystem\Profiles" befinden sich zwar nicht unendlich viele Profile, aber oft mehr als eins.
Bei mir sind es z.B. 4 Profile -- aber eines von diesen ist hervorgehoben durch einen Aufkleber "defaultProfile", REG_SZ, direkt unterhalb von "HKCU..\Profiles"
Dort würde/wird sicherlich bei Zendara auch "Outlook" drinstehen (wenn kein/e Benutzer/in sein7ihr Defaultprofil geändert hat.)

Dennoch würde ich immer das "defaultProfil" suchen und nicht eines, das möglicherweise "Outlook" heißt...das ist wirklich nur ein frei wählbarer Name.


2) in den Daten, die unterhalb des Registry-Schlüssels "HKCU\...........\Profile\{defaultProfile} liebevoll zusammengeharkt sind befinden sich einige, die einfach zu lang für FindStr.exe sind. [ Zu lang bedeutet nicht meterlang, aber mehr als 100+x Zeichen, ich habe es nicht geprüft]
Das führt zu einem Fehler, der von FindStr.exe auf STDERR geschickt wird und folgende Ausgabe erzeugt:
01.
>e:\schnipsel\LotPinxGetPSTpaths.cmd 
02.
FINDSTR: Zeile 16 ist zu lang. 
03.
FINDSTR: Zeile 17 ist zu lang. 
04.
FINDSTR: Zeile 21 ist zu lang. 
05.
FINDSTR: Zeile 54 ist zu lang. 
06.
FINDSTR: Zeile 54 ist zu lang. 
07.
Pfad gefunden: D:\Biber\Pst\Pers÷nlicher AltOrdner.pst 
08.
Pfad gefunden: C:\Dokumente und Einstellungen\Biber\Outlook\archive.pst 
09.
Pfad gefunden: D:\Biber\Pst\BibersPrivat.pst
Den auf STDErr geschickten FindStr-Fehler fange ich in der unteren zweiten FOR-Anweisung ab [dieses "^2^>nul" ist gemeint],
die nun doppelt so lange batchdatei sähe dann so aus:

01.
@echo off & setLocal 
02.
Set "RegAllProfiles=HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles" 
03.
For /f "tokens=1,2,*" %%A in ( 
04.
  'reg query "%RegAllProfiles%" /v DefaultProfile ^| findstr /i "defaultProfile" ' 
05.
) do ( 
06.
  Echo DefaultProfile ist  %%C 
07.
  Rem mach hier was mit dem Profile... 
08.
  Set "RegDefaultProfile=%RegAllProfiles%\%%C" 
09.
10.
:: Rem Hier ggf  Fehlerbehandlung 
11.
If not defined RegDefaultProfile (echo Kein DefaultProfile gefunden) & goto :eof 
12.
For /f "tokens=1,2,*" %%A in ( 
13.
  'reg query "%RegDefaultProfile%" /s ^|findstr /I "    001e6700" ^2^>Nul' 
14.
) do ( 
15.
  Echo Pfad gefunden: %%C 
16.
  Rem mach hier was auch immer mit dem Pfad 
17.
)
Grüße
Biber
Bitte warten ..
Mitglied: LotPings
10.06.2010 um 19:34 Uhr
Hallo Biber,
das ist sicher die bessere Lösung, mein Tipp war ja auch mehr ein Schuß ins blaue
Eigentlich könnte man hier findstr durch find ersetzen, dann wirken die vorangestellten Leerzeichen auch, bei findstr hätten sie ohne /B keine Wirkung.

Gruß
LotPings
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows Systemdateien
gelöst Registry-Schlüssel per Batch auslesen und in Datei schreiben (9)

Frage von Philzip zum Thema Windows Systemdateien ...

Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...