45753
Goto Top

Such-Assistent starten und diesem Parameter übergeben

Tach zusammen,

Ich habe im web gesucht und bei mir vieles ausprobiert doch ohne Erfolg...

Ich möchte per batch den Such-Assistent von Windows aufrufen und dem eine Eingabe der zu suchenden Dateien gleich mitgeben. Zudem soll der Such-Assistent Versteckte Elemente mitdurchsuchen. Die Batch sollte genau das können, was man mit der Maus normalerweise durchführt:
rechte Maustaste auf Ordner + im kontextmenü auf "Suchen" klicken + "Versteckte Elemente durchsuchen" anklicken + nach Dateien suchen: Desktop.ini, Desktop.ico

1.)
-rechte Maustaste auf Ordner + im kontextmenü auf "Suchen" klicken
einen direkten Befehl um den Such-Assistenten aufzurufen habe ich im Web nicht gefunden.
Ich habe mit Sysinternals Regmon zuletzt versucht herauszufinden, was genau passiert wenn man auf start/Suchen klickt - leider habe ich die lösung nicht deuten könenn.

2.)
-"Versteckte Elemente durchsuchen" anklicken
vielleicht durch einen vorherigen import einer registy-keys ?

3.)
-nach Dateien suchen: Desktop.ini, Desktop.ico
Ich habe es bis jetzt nur geschafft mit Hilfe von ClipText 1.3 die Zeile: Desktop.ini, Desktop.ico aus einer Textdatei in den Clipboard zu kopieren.

Ist es möglich mein Vorhaben mit einer Batch-Datei umzusetzen ?

Grüsse,
wobleibtdiezeit

Content-ID: 55872

Url: https://administrator.de/contentid/55872

Ausgedruckt am: 22.11.2024 um 09:11 Uhr

45753
45753 05.04.2007 um 10:47:15 Uhr
Goto Top
Hmm, scheint keine Lösung zu geben für dieses Problem...

Hat jemand denn vielleicht doch eine Ahnung wie man den Such-Assistet mit einer Batch aurifen kann ? Villeicht kann man auch eine Tastenkombination in eine Batch einbauen z.B. Win + F
oder man öffnet den Explorer und löst dann die Taste F3 aus. Wie gesagt für jede Info wäre ich dankbar.

zu 3.)
es gibt eine bessere Lösung: nircmd

-Lösung:
nircmd.exe clipboard set "Desktop.ini, Desktop.ico"

-nircmd Syntax in Sachen Clipboard-Aufgaben:

clipboard [Action] [Parameter]
Allows you to set a value into the clipboard and clear the clipboard.

[Action] may contain one of the following values:

          • set - set the specified text into the clipboard.
          • readfile - set the content of the specified text file into the clipboard.
          • clear - clear the clipboard.
          • writefile - write the content of the clipboard to a file. (text only)
          • addfile - add the content of the clipboard to a file. (text only)


Examples:
clipboard set "123456"
clipboard set ~$folder.desktop$
clipboard set ~$folder.start_menu$
clipboard readfile "c:\temp\info1.txt"
clipboard addfile "c:\temp\clip1.txt"
clipboard clear

---

So, bei mir ist momentan grosse Baustelle. Da ich aber schlecht 6 Beiträge gleichzeitig schreiben kann/sollte, wäre es toll wenn ich jemandem z.B. Biber oder bastla diese Fragen per mail schicken könnte. Ich habe momentan ein Batch-Projekt, in dem die Batch-Datei nun 65 kb umfasst (eine Batch-Datei aus 20 zusammengefasst). Es habdelt sich dabei u.a. um die Lösung der Datktop.ini+Desktop.ico Verteilung in alle unterordner und alles was drum herum dabei anfallen kann + weitere features die ich aus vorherigen beiträgen implementiert habe. Nicht zuletzt ist die Batch so groß geworden, auf Grund des Ausgabemenüs + der Ausgabe in Text-Dateien + der wie ich finde durchdachten Benutzung. Nur komme ich im moment bei einer eigendlich leichten Aufgabe nicht recht weiter. Würde mir jemand bei meinen Fragen vielleicht behilflich sein ?

Im übrigen geht es bei meinen Fragen nicht um das fixen von Problemen in meiner 65kb grossen Batch-Datei - das will ich keinem zumuten - die batch läuft ausserdem ohne irgend ein problem - sondern um das adden von features...
bastla
bastla 05.04.2007 um 19:14:18 Uhr
Goto Top
Hallo wobleibtdiezeit!

An sich sollte es kein Problem sein, mehrere Fragen zu posten (sinnvollerweise auf eine entsprechende Anzahl von Threads verteilt).

Mein Standpunkt ist generell der, dass eigentlich alle davon profitieren, wenn Themen hier im Forum (und nicht über PM) abgehandelt werden - der aktuelle Fragesteller, weil mehrere an der Lösung mitarbeiten können; zukünftige Fragesteller (die dann gar nicht fragen müssen, weil sie bereits eine Lösung vorfinden) und auch jene, die sich um eine Lösung bemühen und durch andere Ansätze vielleicht auf den richtigen (oder zumindest einen besseren) Weg gebracht werden.

(Das heißt aber nicht, dass ich auf per Boardmail an mich herangetragene Fragen grundsätzlich nicht antworte.)
Zu Deinem "Windows-Suche-Aufruf": Warum soll es gerade dieser Weg sein, bzw was ist das Ziel?

Grüße
bastla
45753
45753 07.04.2007 um 10:33:41 Uhr
Goto Top
Hallo bastla!

Erst mal danke, dass ich mehrere Beiträge posten darf. ich denke das werde ich auch machen im laufe der tage.
Ich habe mich in letzter Zeit versuch allein durchzuwurschteln mit ziemlich viel zeitaufwand, doch sind noch ein paar fragen geblieben...

Zum Suche-Assistenten:
der suche assistent ist im vergleich zum ausdruck in eine Text-Datei übersichtlicher und man kann sofort zu dem jeweiligen Ordner der gefundenen Dateien wächseln - aus einer Text-Datei geht das nicht.
Ausserdem müste ich nach meiner ersten Statistik-ausgabe in dem die Anzahl der gefundenen Dateien mit dem entsprechenden Attribut aufgelistet werden ein zweites mal suchen um dann eine weitere Text-Datei - diesmal mit Pfadangabe zu den Dateien - wiederum zu erzeugen. Wenn man dieses alles allerdings ohne weiteren zeitaufwand nur in einer Suche realisieren könnte, dann wäre das auch schon mal nicht schlächt. Ich poste mal den Teil aus meiner Batch-Datei... Den dürftet ihr schon kennen... allerdings nun durch eure Hilfe gefixt + anderer Ausgabe...

echo off
cls


REM ===============================================================================   ===============================================================================
REM  p. Statistik - Dateien + Ordner + Objekte                      Unter-.+.Ordner
REM ===============================================================================   ===============================================================================

:startp
cls

if [%1] neq  cd /d %1 2>nul || cd /d "%~dp1"  

set "anzahl1aaIII=     ...wait"  
set "anzahl2aaIII=     ...wait"  
set "anzahl3aaIII=     ...wait"  
set "anzahl1abIII=     ...wait"  
set "anzahl2abIII=     ...wait"  
set "anzahl3abIII=     ...wait"  
set "anzahl1acIII=     ...wait"  
set "anzahl2acIII=     ...wait"  
set "anzahl3acIII=     ...wait"  
set "anzahl1adIII=     ...wait"  
set "anzahl2adIII=     ...wait"  
set "anzahl3adIII=     ...wait"  
set "anzahl1aeIII=     ...wait"  
set "anzahl2aeIII=     ...wait"  
set "anzahl3aeIII=     ...wait"  
set "anzahl1afIII=     ...wait"  
set "anzahl2afIII=     ...wait"  
set "anzahl3afIII=     ...wait"  

goto :Statistik-doo

:sichtbar
for /f %%i in ('DIR /A-H-D /S /B 2^>nul^|find /c /i "\"') do @set anzahl1aaIII=%%i  
if not defined anzahl1aaIII (set "anzahl1aaIII=          0")  else (set "anzahl1aaIII=          %anzahl1aaIII%")  

for /f %%i in ('DIR /AD-H /S /B 2^>nul^|find /c /i "\"') do @set anzahl2aaIII=%%i  
if not defined anzahl2aaIII (set "anzahl2aaIII=          0")  else (set "anzahl2aaIII=          %anzahl2aaIII%")  

for /f %%i in ('DIR /A-H /S /B 2^>nul^|find /c /i "\"') do @set anzahl3aaIII=%%i  
if not defined anzahl3aaIII (set "anzahl3aaIII=          0")  else (set "anzahl3aaIII=          %anzahl3aaIII%")  

goto :Statistik-doo

:schreib
for /f %%i in ('DIR /AR-D /S /B 2^>nul^|find /c /i "\"') do @set anzahl1abIII=%%i  
if not defined anzahl1abIII (set "anzahl1abIII=          0")  else (set "anzahl1abIII=          %anzahl1abIII%")  

for /f %%i in ('DIR /ADR /S /B 2^>nul^|find /c /i "\"') do @set anzahl2abIII=%%i  
if not defined anzahl2abIII (set "anzahl2abIII=          0")  else (set "anzahl2abIII=          %anzahl2abIII%")  

for /f %%i in ('DIR /AR /S /B 2^>nul^|find /c /i "\"') do @set anzahl3abIII=%%i  
if not defined anzahl3abIII (set "anzahl3abIII=          0")  else (set "anzahl3abIII=          %anzahl3abIII%")  

goto :Statistik-doo

:versteckt
for /f %%i in ('DIR /AH-D /S /B 2^>nul^|find /c /i "\"') do @set anzahl1acIII=%%i  
if not defined anzahl1acIII (set "anzahl1acIII=          0")  else (set "anzahl1acIII=          %anzahl1acIII%")  

for /f %%i in ('DIR /ADH /S /B 2^>nul^|find /c /i "\"') do @set anzahl2acIII=%%i  
if not defined anzahl2acIII (set "anzahl2acIII=          0")  else (set "anzahl2acIII=          %anzahl2acIII%")  

for /f %%i in ('DIR /AH /S /B 2^>nul^|find /c /i "\"') do @set anzahl3acIII=%%i  
if not defined anzahl3acIII (set "anzahl3acIII=          0")  else (set "anzahl3acIII=          %anzahl3acIII%")  

goto :Statistik-doo

:system
for /f %%i in ('DIR /AS-D /S /B 2^>nul^|find /c /i "\"') do @set anzahl1adIII=%%i  
if not defined anzahl1adIII (set "anzahl1adIII=          0")  else (set "anzahl1adIII=          %anzahl1adIII%")  

for /f %%i in ('DIR /ADS /S /B 2^>nul^|find /c /i "\"') do @set anzahl2adIII=%%i  
if not defined anzahl2adIII (set "anzahl2adIII=          0")  else (set "anzahl2adIII=          %anzahl2adIII%")  

for /f %%i in ('DIR /AS /S /B 2^>nul^|find /c /i "\"') do @set anzahl3adIII=%%i  
if not defined anzahl3adIII (set "anzahl3adIII=          0")  else (set "anzahl3adIII=          %anzahl3adIII%")  

goto :Statistik-doo

:archiv
for /f %%i in ('DIR /AA-D /S /B 2^>nul^|find /c /i "\"') do @set anzahl1aeIII=%%i  
if not defined anzahl1aeIII (set "anzahl1aeIII=          0")  else (set "anzahl1aeIII=          %anzahl1aeIII%")  

for /f %%i in ('DIR /ADA /S /B 2^>nul^|find /c /i "\"') do @set anzahl2aeIII=%%i  
if not defined anzahl2aeIII (set "anzahl2aeIII=          0")  else (set "anzahl2aeIII=          %anzahl2aeIII%")  

for /f %%i in ('DIR /AA /S /B 2^>nul^|find /c /i "\"') do @set anzahl3aeIII=%%i  
if not defined anzahl3aeIII (set "anzahl3aeIII=          0")  else (set "anzahl3aeIII=          %anzahl3aeIII%")  

goto :Statistik-doo

:gesamt
for /f %%i in ('DIR /A-D /S /B 2^>nul^|find /c /i "\"') do @set anzahl1afIII=%%i  
if not defined anzahl1afIII (set "anzahl1afIII=          0")  else (set "anzahl1afIII=          %anzahl1afIII%")  

for /f %%i in ('DIR /AD /S /B 2^>nul^|find /c /i "\"') do @set anzahl2afIII=%%i  
if not defined anzahl2afIII (set "anzahl2afIII=          0")  else (set "anzahl2afIII=          %anzahl2afIII%")  

for /f %%i in ('DIR /A /S /B 2^>nul^|find /c /i "\"') do @set anzahl3afIII=%%i  
if not defined anzahl3afIII (set "anzahl3afIII=          0")  else (set "anzahl3afIII=          %anzahl3afIII%")  

call :Statistik-doo
:Statistik-doo-re

set choice=
set /p choice= Ausgeben in Textdatei ? (y/n): 
if not "%choice%" == "" set choice=%choice:~0,1%  
call :choicesglobal
if /i "%choice%" == "y" goto txtja-doo  
if /i "%choice%" == "n" goto txtnein-doo  

call :Statistik-doo

set choicef=%choice%
set choice=
set /p choice= "%choicef%" ist keine gueltige Eingabe. Druecke y (Ja) oder n (Nein) und dann ENTER:   
if not "%choice%" == "" set choice=%choice:~0,1%  
call :choicesglobal
if /i "%choice%" == "y" goto txtja-doo  
if /i "%choice%" == "n" goto txtnein-doo  

goto :startp
:txtja-doo
del /f /q "!!! Statistik - [.Dateien.&.Ordner.&.Objekte.] - ALLER Unter-.+.Ordner !!!.txt" 2> Nul  
set t01="!!! Statistik - [.Dateien.&.Ordner.&.Objekte.] - ALLER Unter-.+.Ordner !!!.txt"  
echo \\\                               -I-N-F-O-S-                               /// > %t01%
echo -==/==========================================================-/==============- >> %t01%
ECHO  p. Statistik - Dateien + Ordner + Objekte                      Unter-.+.Ordner >> %t01%
echo -==/==========================================================-/==============- >> %t01%
ECHO. >> %t01%
echo  Suche nach Dateien und Ordner und Objekten aus allen Unter-.+.Ordnern von... >> %t01%
echo. >> %t01%
echo  "%cd%" >> %t01%  
echo. >> %t01%
echo   _-/=======\-__________ _=_ __-/======\-__________ _=_ _-/=======\-__________ >> %t01%
echo  -== Dateien ===========- = -=== Ordner ===========- = -== Objekte ===========- >> %t01%
echo.                         -=-                        -=- >> %t01%
echo    Sichtbar: %anzahl1aaIII:~-11% -=-  Sichtbar: %anzahl2aaIII:~-11% -=-  Sichtbar: %anzahl3aaIII:~-11% >> %t01%
echo    Schreib.: %anzahl1abIII:~-11% -=-  Schreib.: %anzahl2abIII:~-11% -=-  Schreib.: %anzahl3abIII:~-11% >> %t01%
echo   Versteckt: %anzahl1acIII:~-11% -=- Versteckt: %anzahl2acIII:~-11% -=- Versteckt: %anzahl3acIII:~-11% >> %t01%
echo      System: %anzahl1adIII:~-11% -=-    System: %anzahl2adIII:~-11% -=-    System: %anzahl3adIII:~-11% >> %t01%
echo      Archiv: %anzahl1aeIII:~-11% -=-    Archiv: %anzahl2aeIII:~-11% -=-    Archiv: %anzahl3aeIII:~-11% >> %t01%
echo      Gesamt: %anzahl1afIII:~-11% -=-    Gesamt: %anzahl2afIII:~-11% -=-    Gesamt: %anzahl3afIII:~-11% >> %t01%
echo                          / \                        / \ >> %t01%
echo -==/==========================================================-/==============- >> %t01%
echo. >> %t01%
cls

call :Statistik-doo
call :done
call :Statistik-doo
goto :Statistik-doo-re

:txtnein-doo 
goto :starti

:Statistik-doo
cls
echo \\\                               -I-N-F-O-S-                               ///
echo -==/==========================================================-/==============-
ECHO  p. Statistik - Dateien + Ordner + Objekte                      Unter-.+.Ordner
echo -==/==========================================================-/==============-
ECHO.
echo  Suche nach Dateien und Ordner und Objekten aus allen Unter-.+.Ordnern von...
echo.
echo  "%cd%"  
echo.
echo   _-/=======\-__________ _=_ __-/======\-__________ _=_ _-/=======\-__________
echo  -== Dateien ===========- = -=== Ordner ===========- = -== Objekte ===========-
echo.                         -=-                        -=-
echo    Sichtbar: %anzahl1aaIII:~-11% -=-  Sichtbar: %anzahl2aaIII:~-11% -=-  Sichtbar: %anzahl3aaIII:~-11%
if "%anzahl1aaIII%" == "     ...wait" goto sichtbar  
echo    Schreib.: %anzahl1abIII:~-11% -=-  Schreib.: %anzahl2abIII:~-11% -=-  Schreib.: %anzahl3abIII:~-11%
if "%anzahl1abIII%" == "     ...wait" goto schreib  
echo   Versteckt: %anzahl1acIII:~-11% -=- Versteckt: %anzahl2acIII:~-11% -=- Versteckt: %anzahl3acIII:~-11%
if "%anzahl1acIII%" == "     ...wait" goto versteckt  
echo      System: %anzahl1adIII:~-11% -=-    System: %anzahl2adIII:~-11% -=-    System: %anzahl3adIII:~-11%
if "%anzahl1adIII%" == "     ...wait" goto system  
echo      Archiv: %anzahl1aeIII:~-11% -=-    Archiv: %anzahl2aeIII:~-11% -=-    Archiv: %anzahl3aeIII:~-11%
if "%anzahl1aeIII%" == "     ...wait" goto archiv  
echo      Gesamt: %anzahl1afIII:~-11% -=-    Gesamt: %anzahl2afIII:~-11% -=-    Gesamt: %anzahl3afIII:~-11%
if "%anzahl1afIII%" == "     ...wait" goto gesamt  
echo                          / \                        / \ 
echo -==/==========================================================-/==============-
echo.
goto :eof



REM ...
REM ...
REM ...



REM =====================   ===============================================================================   ===============================================================================
REM === choicesglobal ===
REM =====================   ===============================================================================   ===============================================================================

:choicesglobal
if /i "%choice%" == "+" goto start+  
if /i "%choice%" == "*" goto start*  
if /i "%choice%" == "#" goto start#  
if /i "%choice%" == "-" goto endend  
if /i "%choice%" == "." start cmd & goto start#  
if /i "%choice%" == "i" goto starti  
if /i "%choice%" == "k" goto startk  
if /i "%choice%" == "l" goto startl  
if /i "%choice%" == "9" goto start9  
if /i "%choice%" == "0" goto start0  
if /i "%choice%" == "o" goto starto  
if /i "%choice%" == "p" goto startp  
if /i "%choice%" == "1" goto start1  
if /i "%choice%" == "2" goto start2  
if /i "%choice%" == "3" goto start3  
if /i "%choice%" == "4" goto start4  
if /i "%choice%" == "5" goto start5  
if /i "%choice%" == "6" goto start6  
if /i "%choice%" == "7" goto start7  
if /i "%choice%" == "8" goto start8  
goto :eof



REM ============   ===============================================================================   ===============================================================================
REM === Done ===
REM ============   ===============================================================================   ===============================================================================

:done
echo === Done ===

if EXIST "C:\Programme\shelltoolsutils\Johny_autoittools\wait.exe" goto waitwait  
pause
goto :eof

:waitwait
"C:\Programme\shelltoolsutils\Johny_autoittools\wait" 700  
goto :eof



REM ==============   ===============================================================================   ===============================================================================
REM === endend ===
REM ==============   ===============================================================================   ===============================================================================

:endend 

del /f /q "Verwaltung.von.Desktop.ini.und.Desktop.ico.-.Tutorial.txt" 2> Nul  

if EXIST "C:\Programme\shelltoolsutils\Johny_autoittools\wait.exe" goto waitendend  
echo === Exit ===
pause
exit

:waitendend
echo.
echo === Exit ===
"C:\Programme\shelltoolsutils\Johny_autoittools\wait" 700  
exit

:eof

Ich muste den Code leider wieder splitten, da zu lang...

Gruss, wobleibtdiezeit

p.s. beim code post hat sich ein fehler eingeschlichen in der fünften Zeile über
REM ...
REM ...
REM ...
den Backslash mag er nicht. In dem Teil der Text-Umleitung hingegen stimmt es wieder...

Gefixed: ein leerzeichen hinter dem Backslash behob das Problem.
45753
45753 17.04.2007 um 09:01:04 Uhr
Goto Top
Version 1.12

Moin,

Da es anscheinend keine so einfache Lösung für dieses Problem gab, hab ich mich immer wieder mal nach möglichen Lösung im Web umgeschaut. Als ich auf AutoHotkey gestossen bin rückte die Lösung dann immer näher...

Hier nun die Lösung:

-== Variante 1 ==-

Batch: "Such-Assistent.-.F3.d.STRG+v.ALT+s.bat"
@echo off
:: Benötigte Files: "nircmd.exe"  
:: Benötigte Files: "autohotkey.-.Such-Assistent.-.F3.d.STRG+v.ALT+s.exe"  

set reg_var_suchassistent="Such-Assistent.-.F3.d.STRG+v.ALT+s.reg"  
del /f /q %reg_var_suchassistent% 2> Nul
echo.
echo Windows Registry Editor Version 5.00> %reg_var_suchassistent%
echo.>> %reg_var_suchassistent%
echo [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer]>> %reg_var_suchassistent%
echo "SearchHidden"=dword:00000001>> %reg_var_suchassistent%  
echo.
START /WAIT REGEDIT /S %reg_var_suchassistent%
del /f /q %reg_var_suchassistent% 2> Nul
Explorer /n,/e,"%cd%"  
nircmd win activate class "ExploreWClass"  
nircmd.exe clipboard set "Desktop.ini, Desktop.ico"  
nircmd wait 500
"autohotkey.-.Such-Assistent.-.F3.d.STRG+v.ALT+s.exe"  

AutoHotkey Exe: "autohotkey.-.Such-Assistent.-.F3.d.STRG+v.ALT+s.ahk"
Sleep, 100
Send, {CTRLDOWN}n{CTRLUP}
Sleep, 100
Send, {F3}
Sleep, 100
Send, {d}{BACKSPACE}
Sleep, 100
Send, {CTRLDOWN}v{CTRLUP}
Sleep, 1000
Send, {ALTDOWN}s{ALTUP}

-== Variante 2 ==-

Batch: "Such-Assistent.-.F3.d.STRG+v.TAB.SHIFT+TAB.ENTER.bat"
@echo off
:: Benötigte Files: "nircmd.exe"  
:: Benötigte Files: "autohotkey.-.Such-Assistent.-.F3.d.STRG+v.TAB.SHIFT+TAB.ENTER.exe"  

set reg_var_suchassistent="Such-Assistent.-.F3.d.STRG+v.TAB.SHIFT+TAB.ENTER.reg"  
del /f /q %reg_var_suchassistent% 2> Nul
echo.
echo Windows Registry Editor Version 5.00> %reg_var_suchassistent%
echo.>> %reg_var_suchassistent%
echo [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer]>> %reg_var_suchassistent%
echo "SearchHidden"=dword:00000001>> %reg_var_suchassistent%  
echo.
START /WAIT REGEDIT /S %reg_var_suchassistent%
del /f /q %reg_var_suchassistent% 2> Nul
Explorer /n,/e,"%cd%"  
nircmd win activate class "ExploreWClass"  
nircmd.exe clipboard set "Desktop.ini, Desktop.ico"  
nircmd wait 500
"autohotkey.-.Such-Assistent.-.F3.d.STRG+v.TAB.SHIFT+TAB.ENTER.exe"  

AutoHotkey Exe: "autohotkey.-.Such-Assistent.-.F3.d.STRG+v.TAB.SHIFT+TAB.ENTER.ahk"
Sleep, 100
Send, {CTRLDOWN}n{CTRLUP}
Sleep, 100
Send, {F3}
Sleep, 100
Send, {d}{BACKSPACE}
Sleep, 100
Send, {CTRLDOWN}v{CTRLUP}
Sleep, 1000
Send, {TAB}
Sleep, 100
Send, {SHIFTDOWN}{TAB}{SHIFTUP}
Sleep, 100
Send, {ENTER}


...schon lustig wie man aus vielen Einzelinformationen aus dem Web und eigenen Überlegungen etwas ganzes zusammenbasteln kann...

Kurze Erläuterung zu beiden Varianten:
1. zuerst wird aus der Batch eine .reg datei erzeugt, die die Option im Such-Assistent nach versteckten Dateien zu suche anstellt.
2. die erzeugte regdatei wird im silent mode (ohne nachfrage) in die registry importiert.
3. die erzeugte regdatei wird wieder gelöscht.
4. Der Windows Explorer wird gestartet und geht automatisch in das Verzeichnis von dem aus die Batch-Datei gestartet wurde.
5. nircmd holt die Fensterklasse "ExploreWClass" (also den Windows Explorer) in den Vordergrund (normalerweise müste das Fenster schon im Vordergrund sein, aber wenn nicht, dann ist diese Funktion Pflicht, da autohotkey sonst nicht funktionieren würde).
6. nircmd kopiert die Dateien "Desktop.ini, Desktop.ico" in den Zwischenspeicher.
7. nircmd gibt windows eine halbe sekunde zeit diese Operationenen abzuschliessen.
8. das autohotkey script wird ausgeführt und simuliert nun die Tastatur nach.
8a. Der Explorer ist nun gestartet und dessen Tab wird wenn QT TabBar installiert ist mit ctrl+n gecloned (bei installiertem QT TabBar ist das Plicht, da die Suche sonst nicht startet wenn der Tab bereits existierte bzw. es dann bei der Suche zu einer Fehlermeldung kommen kann. Im Standard Explorer ist diese Tastenkombination nicht existent und dürfte somit keine negativen Auswirkungen haben.
8b. mit der Taste F3 wird nun zum Such-Assistent gewächselt.
8c. Mit Taste d wird in die Suche "Datei und Ordner" gewächselt
8d. Mit strg+v wird der text aus der Zwischenablage in das Suchfeld der Such-Assistenten eingefügt.
8e. 1 Sek Wartezeit bis der Such-Assistent sich endlich "beruhigt" hat.
8f. Variante 1: mit den Tasten alt+s wird die suche auf den Weg geschickt.
8f. Variante 2: mit den Tasten strg+v; tab; Shift+tab; Enter wird die suche auf den Weg geschickt.

-Die Variante 1 ist manchmal wirkungslos, da manchmal das S vom Button "Suchen" im Such-Assistenten nicht unterstrichen ist und demnach die Tastenkombination Alt+s nicht akzeptiert wird. warum das S manchmal unterstrichen ist und manchmal nicht konnte ich bis jetzt noch nicht herausbekommen.
-Im Vergleich zur Variante 1 wird der Suchtext bei der Variante 2 komplett selektiert.
-Der Vorgang Tab und Shift+Tab ist notwendig, da im Explorer womöglich bereits existierende suchanfragen dem Benutzer angeboten werden und wenn man dann Enter drückt würde die Suche dann nicht gestartet werden. Es würden nur die Angebote "gehidet" werden. Würde man zwei Enters setzen, dann würde die suchanfrage ohne vorherigem Angebot wieder abgebrochen werden. Deshalb die Lösung mit Tab und Shift+Tab.
-Da die Dateien Desktop.ini und Desktop.ico versteckte systemdateien sind muste ich sichergehen, dass der Such-Assistent auch nach verteckten Dateien sucht und muste deshalb die regdatei aus der batch erzeugen um diese dann in die registry importieren zu können und das bevor der Windows Explorer gestartet wird.
-In den Batch-Dateien wird in der letzten zeile eine .exe angegeben und nicht die .ahk. Man sollte das autohotkey-script mit installiertem autohotkey zu einer exe kompilieren, sodass diese exe dann auf jedem Rechner laufen kann und das auch ohne installiertem autohotkey.
-Die autohotkey exen sollten in den Ordner "C:\Windows\system32" kopiert werden. So findet die Batch-Datei die exen automatisch ohne dass diese immer mit der Batch-Datei mitgeschleift werden müssen. Das gleich gilt natürlich auch für nircmd.
-Ich muste in den Scripten immer höhere Verzögerungen einsetzten bis dann letztenendes alles ohne lästige Zwischenfälle ablief...

-Manche Leute würden sich vielleicht fragen, was der ganze Quatsch eigendlich soll:
Die Batches machen hier in diesem Falle nichts anderes als die Suche nach den Dateien "Desktop.ini" und "Desktop.ico" aus der Eingabeaufforderung an den Such-Assistenten von Windows zu übergeben und deise dann sofot zu starten - also alles komplett automatisiert. Wenn man nun zig dieser Dateien in seinen Unterordner liegen hat, dann ist man mit dem Such-Assistenten um ein vielfaches besser beraten. Man kann dort die Funde nach datum ordnen, nach verzeichnisse, nach grösse, nach attributen, usw und das mit nur einer Suchanfrage. Die Übersichtlichkeit ist mit der der Standard-Eingabeaufforderung besonders bei langen Verzeichnisstrukturen nicht zu vergleichen...
Desweiteren ist es nun möglich Suchpresets anzulegen, die man dann meinetwegen auch Zeitgesteuert dem Such-Assistenten automatisiert ausführen lassen kann.
Es gibt bestimmt noch mehr Aufgaben...

---

Edit - Bugfix zu Version 1.1:

Es sind zwei neue Zeilen in den beiden autohotkey-scripten dazugekommen.

Sleep, 100
Send, {d}{BACKSPACE}

Wenn man im Explorer den Such-Assistent mit der Taste F3 aufruft, dann gelangt man auf einem Standard Windows XP in das Fenster mit der Abfrage "Wonach soll gesucht werden?" Wenn man nun die Taste {d} drückt, wählt man den Menüpunkt "Datei und Ordner" aus. Bei mir ist dieser Menüpunkt allerdings schon die Standardsuche. Ich komme also ohne die {d} Taste aus. Um das eingetragene d bei mir in dem Suchfeld dann wieder zu löschen muss man noch die Taste {BACKSPACE} setzen. So dürfte es jetzt auf allen Rechner funktionieren. Wenn allerdings jemand eine andere Suche als Standardsuche eingestellt hat, dann funktioniert es wiederum nicht mehr. Ich begebe mich jetzt mal auf die Suche nach dem entsprechenden Registry eintrag...

So, ich werde das sein lassen, da ich keinem seine Einstellungen verändern möchte. Die Einstellungsänderung nach versteckten Dateien zu suchen reicht schon...
Wenn man allerdings mit der Batch vorher den betreffendenwert aus der Registry expotiert und diesen dann zu vergleicht mit z.B. change.exe dann könnte das eine Lösung sein um den originalwert dann wieder zurückimportiren zu können. Nur komme ich mit change.exe nicht klar. Wenn ich diese starte fragt sie mich ständig nach dem host usw. und ich bin noch nicht dahintergekommen was ich da machen muss...

Das Problem hat sich erledigt. Es gibt nur diese zwei Grundeinstellungen - zu finden unter:
Explorer/Suche/Bevorzugte Einstellungen ändern/Datei- und Ordnerverhalten ändern:
Ich habe es auf "Erweitert..." gestellt gehabt. Standard-Einstellung ist "Standard..."
Also Problem gelöst!

---

Edit - Bugfix zu Version 1.11:

Es gab wieder mal ein Timing-Problem. Es betraf die 2. Variante bei der die Suche manchmal nicht gestartet wurde. Sorry, aber ich kenne mich mit AutoHotkey einfach noch nicht so gut aus.

alte zeile:

Send, {SHIFTDOWN}{TAB}{SHIFTUP}{ENTER}

neue zeilen:

Send, {SHIFTDOWN}{TAB}{SHIFTUP}
Sleep, 100
Send, {ENTER}

---

Edit - Bugfix zu Version 1.12:

Es gibt ein Problem das wahrscheinlich nur wenige betreffen wird. Allerdings wenn ihr das hier durchgelesen hab, dann wird es euch wahrscheinlich auch betreffen face-smile Es handelt sich um das schöne Programm "QT TabBar" das Tabbrowsing im Windows Explorer ermöglicht.
Das Problem: Wenn im Explorer ein Tab mit dem zu öffnenden Ordner bereits existieren sollte (Befehl "Explorer /n,/e,%cd%"), dann wird QT TabBar keinen zweiten Tab erzeugen sondern bei dem existierenden Tab bleiben. Wenn die "autohotkey.....exe" dann die Tastenkombinationen durchführt, dann wird beim letzten Befehl (der die Suche dann starten soll) ein Fehler Screen ausgegeben "Unerwarteter Fehler - Aktion konnte nicht abgeschlossen werden." Das passiert aber nicht immer und ich kenne noch nicht die Ursache dafür...
...es liegt doch nicht an autohotkey - es liegt an windows... ich glaube ich brauch noch mehr zeit...

Gelöst:
Nach "C:\Programme\QT TabBar 1.0.14" und dort die exe "QTShortcutKeyEditor.exe" ausführen. Dort auf den Button Default und dann auf OK klicken. Den ShortcutKey den ich benötige ist "Ctrl + N" (Clone current tab). die beiden autohotkey-scripte werden diese Tastenkombination als erstes ausführen und dann geht es weiter mit F3...
Die Tastenkombination "Ctrl + N" ist im Windows Explorer standardmäßig nicht belegt. Also dürfte diese keine negativen auswirkungen haben...

Das Problem mit der Fehlermeldung "Unerwarteter Fehler - Aktion konnte nicht abgeschlossen werden." tritt nun auch nicht mehr auf. Nur kann das nicht ganz sein, da dieser fehler bekannt ist und es dafür auch einen RegistryPatch gibt. Da durch meine vielen Suchanfragen im Such-Assistent durch meine Batch das Problem vielleicht hervorgerufen wurde, denke ich ist es nicht falsch darauf auch noch hinzuweisen...

Suche.reparieren.reg
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{e17d4fc0-5564-11d1-83f2-00a0c90dc849}]
@="Search Results Folder"  
Nur verändert der offenbar auch einige der benutzerdefinierten Einstellungen...
Danach muss die Suchfunktion wieder neu installiert werden:
Unter C:\Windows einen Rechtsklick auf die Datei srchasst.inf machen und dann auf "Installieren" klicken... Such-Assistenten wird neu installiert... Die Windows-CD wird für diesen Vorgang meistens benötigt. Windows muss danach vielleicht neugestartet werden.

---

Edit - Bugfix zu Version 1.13 (noch nicht existent):

Auf einem meiner Rechner funktiniert das Script immer noch nicht... Der Übergang von Taste F3 auf D funktioniert dort einfach nicht. Es liegt nicht an der vielleicht zu niedrig gesetzten Sleep Zeit. Wenn ich das autohotkey-script allein starte funktioniert alles. wenn ich die exe durch die Batch starten lasse dann funktioniert es wieder nicht. Woran das liegen kann wies ich nicht. Die Lösung hierfür ist, im Explorer das Datei- und Ordnerverhalten zu ändern:
Explorer/Suche/Bevorzugte Einstellungen ändern/Datei- und Ordnerverhalten ändern: Auf "Erweitert..." klicken.

---

Gruss,
wobleibtdiezeit
bastla
bastla 17.04.2007 um 12:16:00 Uhr
Goto Top
Hallo wobleibtdiezeit!

Da steckt ja eine Menge Arbeit drin - Du solltest das nicht hier in diesem Thread "verstecken", sondern als Tutorial reinstellen. Da Du hier in Batch & Shell bist, vielleicht dazu eine Mail an Biber als Mod ...

Grüße
bastla
Biber
Biber 18.04.2007 um 11:08:04 Uhr
Goto Top
Moin wobleibtdiezeit,

Wie gestern angekündigt habe ich jetzt mal die neuen Moderatorfeatures ausprobiert und alle nicht zielführenden Kommentare in diesem Thread gelöscht.

Der erhaltenswerte Rest ist ein schönes und sicherlich lebendes Tutorial.

Gruss
Biber