Discussion:
Funktion 'Open Command Window Here' auch im Datei-Menü verfügbar machen
(zu alt für eine Antwort)
Mike Neuer
2007-10-05 12:02:09 UTC
Permalink
Hallo Ihr Wissenden,

ich habe mir von den Powertoys das CmdHere.exe heruntergeladen und
installiert. Toll Geschichte, allerdings wird mit nur bei Mappen der
Menü-Eintrag "Open Command Window Here" angezeigt. Ich hätte diesen
Eintrag gerne immer im Menü, also auch bei normalen Dateien. Wie kann
ich das bewerkstelligen?

Habt Dank im voraus!
Mike
--
http://www.crazyaviation.com/deutsch.htm
Stefan Zivkovic
2007-10-05 12:22:36 UTC
Permalink
Hallo Mike,
Post by Mike Neuer
ich habe mir von den Powertoys das CmdHere.exe heruntergeladen und
installiert. Toll Geschichte, allerdings wird mit nur bei Mappen der
Menü-Eintrag "Open Command Window Here" angezeigt. Ich hätte diesen
Eintrag gerne immer im Menü, also auch bei normalen Dateien. Wie kann
ich das bewerkstelligen?
gar nicht. Du kannst das DOS-Fenster nur auf ein Verzeichnis öffnen,
nicht auf eine Datei.
--
Stefan Zivkovic
Mike Neuer
2007-10-05 12:46:57 UTC
Permalink
Stefan,

hab Dank für Deine Antwort.
Post by Stefan Zivkovic
Post by Mike Neuer
ich habe mir von den Powertoys das CmdHere.exe heruntergeladen und
installiert. Toll Geschichte, allerdings wird mit nur bei Mappen der
Menü-Eintrag "Open Command Window Here" angezeigt. Ich hätte diesen
Eintrag gerne immer im Menü, also auch bei normalen Dateien. Wie
kann
Post by Mike Neuer
ich das bewerkstelligen?
gar nicht. Du kannst das DOS-Fenster nur auf ein Verzeichnis öffnen,
nicht auf eine Datei.
Ich will nicht ein Dos-Fenster auf eine Datei öffnen, sondern ein
Dos-Fenster in dem Verzeichnis wo sich die Datei befindet.

Beispiel:
c:\Dokumente und Einstellungen\Michael\Bilder\
Darin befinden sich einige Fotos, Textdateien und auch Verknüpfungen.
Ich möchte jetzt irgendeine Datei anklicken können, die rechte Maustaste
drücken und dann den Menüpunkt "Open Command Windows Here". Jetzt soll
sich ein Dos-Fenster öffnen mit dem oben genannten Pfad.

Also quasi in jedem Menü den Menüpunkt "Open Command Windows Here" und
nicht nur auf Mappen. Ist das machbar und wenn ja wie?

Servus!
Mike
--
http://www.crazyaviation.com/deutsch.htm
unknown
2007-10-05 13:23:13 UTC
Permalink
"Mike Neuer" schrieb
Post by Mike Neuer
Ich will nicht ein Dos-Fenster auf eine Datei öffnen, sondern ein
Dos-Fenster in dem Verzeichnis wo sich die Datei befindet.
Hallo Mike,

besuche mal:

http://www.ghisler.com/deutsch.htm

Dort wird der "Total Commander" beschrieben und angeboten.
Wie bei den meisten Commandern üblich, in bewährter
'2-Fenster-Darstellung'. Darin kannst Du Dich zum gewünschten
Ordner hangeln, klickst dann auf 'Befehle' und in dessen
Menue auf 'DOS starten'. Schwupps, öffnet sich das DOS -Fenster
im angewählten Ordner.

Angeboten wird ua. eine 30-Tage-Testversion, anschließend
entweder Löschen oder ca. 28 ? bezahlen.

Auch hier: Ansichtssache, ob man das nutzt oder nicht.
Bei _mir_ seit 1997 im Einsatz, ich möchte wegen der
vielen Vorteile nicht darauf verzichten. AFAIK bietet
MS nichts vergleichbares.


HTH, HAND und CU von

springi aus Cottbus
Mike Neuer
2007-10-05 14:01:56 UTC
Permalink
Wolfgang,
Post by unknown
"Mike Neuer" schrieb
Post by Mike Neuer
Ich will nicht ein Dos-Fenster auf eine Datei öffnen, sondern ein
Dos-Fenster in dem Verzeichnis wo sich die Datei befindet.
Hallo Mike,
http://www.ghisler.com/deutsch.htm
Dort wird der "Total Commander" beschrieben und angeboten.
Wie bei den meisten Commandern üblich, in bewährter
'2-Fenster-Darstellung'. Darin kannst Du Dich zum gewünschten
Ordner hangeln, klickst dann auf 'Befehle' und in dessen
Menue auf 'DOS starten'. Schwupps, öffnet sich das DOS -Fenster
im angewählten Ordner.
Angeboten wird ua. eine 30-Tage-Testversion, anschließend
entweder Löschen oder ca. 28 ? bezahlen.
Auch hier: Ansichtssache, ob man das nutzt oder nicht.
Bei _mir_ seit 1997 im Einsatz, ich möchte wegen der
vielen Vorteile nicht darauf verzichten. AFAIK bietet
MS nichts vergleichbares.
HTH, HAND und CU von
springi aus Cottbus
hab Dank für Deine Antwort, aber das ist nicht das was ich suche.

Servus!
Mike
--
http://www.crazyaviation.com/deutsch.htm
Ralf Breuer
2007-10-05 14:43:48 UTC
Permalink
Mike Neuer <***@gmx.de> schrieb:

Hallo Mike,
Post by Mike Neuer
ich habe mir von den Powertoys das CmdHere.exe heruntergeladen und
installiert. Toll Geschichte, allerdings wird mit nur bei Mappen der
Menü-Eintrag "Open Command Window Here" angezeigt. Ich hätte diesen
Eintrag gerne immer im Menü, also auch bei normalen Dateien. Wie kann
ich das bewerkstelligen?
Hier mal ein passendes .reg-File:

---------- schnipp -------------
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell]

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\cmd]
@="Konsole für Dateien öffnen"

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\cmd\command]
@="cmd.exe /k \"for %%a in (%L) do cd %~dpa\""

---------- schnapp -------------

Allerdings funktioniert das nur bei Dateien korrekt. Bei Ordnern wird der
übergeordnete Ordner benutzt. Das kommt, weil gnadenlos das letzte Stück der
Pfadangabe abgeschnitten wird.
--
Gruß
Ralf
Ich mag kein TOFU. Siehe http://einklich.net/usenet/zitier.htm
Bei Direkt-Mails NOSPAM entfernen
Ralf Breuer
2007-10-05 15:28:58 UTC
Permalink
Ralf Breuer <***@t-online.de> schrieb:

[Halbdurchdachtes]


Besser:

---------- schnipp -------------
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell]

[HKEY_CLASSES_ROOT\*\shell\cmd]
@="Konsole für Datei öffnen"

[HKEY_CLASSES_ROOT\*\shell\cmd\command]
@="cmd.exe /k \"for %%a in (%L) do cd %~dpa\""

---------- schnapp -------------

Ingrid ;-)
Mike Neuer
2007-10-07 08:07:05 UTC
Permalink
Ralf,

hab Dank für Deine zielführende Antwort!
Post by Ralf Breuer
[Halbdurchdachtes]
---------- schnipp -------------
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell]
[HKEY_CLASSES_ROOT\*\shell\cmd]
@="Konsole für Datei öffnen"
[HKEY_CLASSES_ROOT\*\shell\cmd\command]
@="cmd.exe /k \"for %%a in (%L) do cd %~dpa\""
---------- schnapp -------------
Warum diese for-Schleife? Das funktioniert bei mir leider nicht.
Speziell wenn Leerzeichen im Verzeichnisnamen sind.

Ich habe etwas experimentiert und benutze nun folgendes:

[HKEY_CLASSES_ROOT\*\shell]

[HKEY_CLASSES_ROOT\*\shell\cmd]
@="Öffne cmd"

[HKEY_CLASSES_ROOT\*\shell\cmd\command]
@="cmd.exe"

Jetzt frage ich mich was genau das Powertoys CmdHere.exe macht, wenn es
doch so einfach auch geht.

Was ist der Unterschied zwischen
HKEY_CLASSES_ROOT\AllFilesystemObjects\shell und
HKEY_CLASSES_ROOT\*\shell\cmd?

Servus!
Mike
--
http://www.crazyaviation.com/deutsch.htm
Ralf Breuer
2007-10-14 09:15:41 UTC
Permalink
Post by Mike Neuer
Post by Ralf Breuer
@="cmd.exe /k \"for %%a in (%L) do cd %~dpa\""
Warum diese for-Schleife?
Weil nur innerhalb "for" die Parameter-Konvertierung %~dp... funktioniert.
Post by Mike Neuer
Das funktioniert bei mir leider nicht.
Speziell wenn Leerzeichen im Verzeichnisnamen sind.
Dann brauchst Du noch weitere Gänsefüßchen.
Post by Mike Neuer
...
@="cmd.exe"
Das klappt nur, wenn der Ordner, in dem die Datei liegt, markiert ist.
Post by Mike Neuer
Jetzt frage ich mich was genau das Powertoys CmdHere.exe macht, wenn
es doch so einfach auch geht.
Du kannst durch (praxisfremdes) Herumklicken im Explorer eine Situation
provozieren, in der im cmd-Fenster der falsche Pfad aktuell ist.
Post by Mike Neuer
Was ist der Unterschied zwischen
HKEY_CLASSES_ROOT\AllFilesystemObjects\shell und
HKEY_CLASSES_ROOT\*\shell\cmd?
"AllFileSystemObjects" sind Ordner und Dateien, "*" nur Dateien.
--
Gruß
Ralf
Ich mag kein TOFU. Siehe http://einklich.net/usenet/zitier.htm
Bei Direkt-Mails NOSPAM entfernen
Mike Neuer
2007-10-14 16:13:57 UTC
Permalink
Ralf,

hab vielen Dank für Deine Antwort.
Post by Ralf Breuer
Post by Mike Neuer
Post by Ralf Breuer
@="cmd.exe /k \"for %%a in (%L) do cd %~dpa\""
Warum diese for-Schleife?
Weil nur innerhalb "for" die Parameter-Konvertierung %~dp... funktioniert.
Mittlerweile glaube ich die for-Schleife verstanden zu haben. Es ist
quasi eine for-Schleife mit einer einzigen Datei. Richtig? In for /?
habe ich mittlerweile nachgelesen, was %~dpa bedeutet. Das d und p
verstehen ich, aber wozu das a für Dateiattribute?
Post by Ralf Breuer
Post by Mike Neuer
Das funktioniert bei mir leider nicht.
Speziell wenn Leerzeichen im Verzeichnisnamen sind.
Dann brauchst Du noch weitere Gänsefüßchen.
Post by Mike Neuer
...
@="cmd.exe"
Das klappt nur, wenn der Ordner, in dem die Datei liegt, markiert ist.
Wie soll sonst das rechte Maustastenmenü funktionieren?
Post by Ralf Breuer
Post by Mike Neuer
Jetzt frage ich mich was genau das Powertoys CmdHere.exe macht, wenn
es doch so einfach auch geht.
Du kannst durch (praxisfremdes) Herumklicken im Explorer eine Situation
provozieren, in der im cmd-Fenster der falsche Pfad aktuell ist.
Ist mir durch Rumklicken bisher noch nicht untergekommen. Was müßte ich
genau anstellen?
Post by Ralf Breuer
Post by Mike Neuer
Was ist der Unterschied zwischen
HKEY_CLASSES_ROOT\AllFilesystemObjects\shell und
HKEY_CLASSES_ROOT\*\shell\cmd?
"AllFileSystemObjects" sind Ordner und Dateien, "*" nur Dateien.
Wieder etwas gelernt!

Eine weitere Frage hätte ich noch zur Batch-Programmierung. Kann man
auch in Dateien eine for-Schleife anwenden und nach Inhalten suchen und
vergleichen?

Meine Datei hat folgenden Inhalt:
Kassier=Lieschen Müller, keine Email-Adresse bekannt
Vorstand=Karl Mustermann, ***@yahoo.xy
Jugendleiter=Wilhelm Busch, ***@homepage.de
...

Was muß ich anstellen um z.B. den Namen oder die Email-Adresse des
Jugendleiters zu ermitteln?

Kennst Du ein gutes Buch oder Adresse im Internet wo ich mehr über die
Batch-Programmierung lernen kann?

Hab vielen Dank und noch einen schönen Sonntag!
Mike
--
http://www.crazyaviation.com/deutsch.htm
Ralf Breuer
2007-10-14 18:51:56 UTC
Permalink
Post by Mike Neuer
Mittlerweile glaube ich die for-Schleife verstanden zu haben. Es ist
quasi eine for-Schleife mit einer einzigen Datei. Richtig?
Ja
Post by Mike Neuer
In for /? habe ich mittlerweile nachgelesen, was %~dpa bedeutet.
Das d und p verstehen ich, aber wozu das a für Dateiattribute?
Das a ist der Parameter-Bezeichner. "for %%a..."
Post by Mike Neuer
Post by Ralf Breuer
Post by Mike Neuer
@="cmd.exe"
Das klappt nur, wenn der Ordner, in dem die Datei liegt, markiert ist.
Wie soll sonst das rechte Maustastenmenü funktionieren?
Wenn ein anderer Ordner aktiv ist und die rechte Maustaste auf einer Datei,
die nicht in dem Ordner liegt, benutzt wird, kommt ein "falsches Ergebnis".
Post by Mike Neuer
Ist mir durch Rumklicken bisher noch nicht untergekommen. Was müßte
ich genau anstellen?
Hmm, jetzt auf Knopfdruck schaffe ich es nicht ;-/
Post by Mike Neuer
Eine weitere Frage hätte ich noch zur Batch-Programmierung. Kann man
auch in Dateien eine for-Schleife anwenden und nach Inhalten suchen
und vergleichen?
Ja, das wird schon gehen.
Post by Mike Neuer
Kassier=Lieschen Müller, keine Email-Adresse bekannt
...
Was muß ich anstellen um z.B. den Namen oder die Email-Adresse des
Jugendleiters zu ermitteln?
find /I "jugendleiter" NameDerDatei
bzw.
for %%a in (*.txt) do find /I "jugendleiter" %%a
bzw.
for /f "delims=" %%a in ('dir *.txt /b /s') do find /I "jugendleiter" "%%a"
Post by Mike Neuer
Kennst Du ein gutes Buch oder Adresse im Internet wo ich mehr über die
Batch-Programmierung lernen kann?
Start, Hilfe und Support, Stichwort: befehlszeilenreferenz
Post by Mike Neuer
Hab vielen Dank
bitte :-)
Post by Mike Neuer
und noch einen schönen Sonntag!
Danke dito :-)
--
Gruß
Ralf
Ich mag kein TOFU. Siehe http://einklich.net/usenet/zitier.htm
Bei Direkt-Mails NOSPAM entfernen
Helmut Rohrbeck
2007-10-05 15:52:59 UTC
Permalink
Post by Mike Neuer
ich habe mir von den Powertoys das CmdHere.exe heruntergeladen und
installiert. Toll Geschichte, allerdings wird mit nur bei Mappen der
Menü-Eintrag "Open Command Window Here" angezeigt. Ich hätte diesen
Eintrag gerne immer im Menü, also auch bei normalen Dateien. Wie kann
ich das bewerkstelligen?
Durch einen Eintrag in der Registry:
----------------------------------------
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\CMD]
@="Pfad im CMD Prompt anzeigen"

[HKEY_CLASSES_ROOT\*\shell\CMD\command]
@="cmd.exe /k dir /a \"%L\""

-----------------------------------------
Kopiere den Text zwischen den Linien in die Zwischenablage
(einschließlich Leerzeile am Ende) und füge ihn in ein
leeres Notepad-Fenster (Editor) ein. Speichere die Datei
als CMD.reg und klicke sie danach doppelt an, damit sie
in die Registry eingetragen wird. Danach hast Du beim
Rechtsklick auf eine Datei im Kontextmenü die zusätzliche
Auswahl "Pfad im CMD Prompt anzeigen".
--
Helmut Rohrbeck www.helmrohr.de
Mail nur über das Kontaktformular
auf meiner Webseite!
Mike Neuer
2007-10-07 08:16:16 UTC
Permalink
Helmut,

habe auch Du vielen Dank für Deine zielführende Antwort!
Post by Helmut Rohrbeck
Post by Mike Neuer
ich habe mir von den Powertoys das CmdHere.exe heruntergeladen und
installiert. Toll Geschichte, allerdings wird mit nur bei Mappen der
Menü-Eintrag "Open Command Window Here" angezeigt. Ich hätte diesen
Eintrag gerne immer im Menü, also auch bei normalen Dateien. Wie kann
ich das bewerkstelligen?
----------------------------------------
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\CMD]
@="Pfad im CMD Prompt anzeigen"
[HKEY_CLASSES_ROOT\*\shell\CMD\command]
@="cmd.exe /k dir /a \"%L\""
-----------------------------------------
Deine Lösung gefällt mir auch gut. Sie macht auch einen dir der Datei,
was ich auch ab und an brauche, allerdings dann mit allen Dateien.

Durch probieren bin ich auf folgende Lösung gestossen, die mir einfach
eine cmd im aktuellen Verzeichnis startet. Genau das was ich suche:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell]

[HKEY_CLASSES_ROOT\*\shell\cmd]
@="Öffne cmd"

[HKEY_CLASSES_ROOT\*\shell\cmd\command]
@="cmd.exe"

Was müßte ich tun, wenn ich Deine und meine Lösung parallel im Menü
haben will, also ein "Öffne cmd" und ein "Öffne cmd mit dir"? Ich
habe folgendes probiert:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\CMD]
@="Öffne cmd mit dir"

[HKEY_CLASSES_ROOT\*\shell\CMD\command]
@="cmd.exe /k dir"

Leider überschreibt mir das mein "Öffne cmd". Was muß ich verändern,
damit ich beide im Menü habe?

Servus!
Mike
--
http://www.crazyaviation.com/deutsch.htm
Dirk Schwarzmann
2007-10-12 09:37:47 UTC
Permalink
Hallo Mike,

auch wenn ich etwas spät dran bin, ich glaube, ich kann Dir ein wenig
Post by Mike Neuer
Was müßte ich tun, wenn ich Deine und meine Lösung parallel im Menü
haben will, also ein "Öffne cmd" und ein "Öffne cmd mit dir"? Ich
[...]
Post by Mike Neuer
Leider überschreibt mir das mein "Öffne cmd". Was muß ich verändern,
damit ich beide im Menü habe?
Du legst im "shell" Zweig _zwei_ Zweige (aka Schlüssel) an mit
unterschiedlichem Namen.
Windows fügt sie automatisch beide in das Kontextmenü ein. Beispiel:

[HKEY_CLASSES_ROOT\*\shell]

[HKEY_CLASSES_ROOT\*\shell\DOS_Box1]
@="DOS-Box Nr. 1 hier"

[HKEY_CLASSES_ROOT\*\shell\DOS_Box2]
@="DOS-Box Nr. 2 hier"

Jeder Zweig muss dann wiederum einen Schlüssel "command" haben (dieser
Name ist Pflicht),
in dessen Standard-Eintrag wie üblich der auszuführende Befehl steht.
Post by Mike Neuer
Jetzt frage ich mich was genau das Powertoys CmdHere.exe macht, wenn es
doch so einfach auch geht.
Meines Wissens macht das Programm auch nichts anderes, als Dir die
Arbeit abzunehmen,
das selbst in die Registry einzutragen.
Post by Mike Neuer
Was ist der Unterschied zwischen
HKEY_CLASSES_ROOT\AllFilesystemObjects\shell und
HKEY_CLASSES_ROOT\*\shell\cmd?
Der erste Eintrag gilt sowohl für Verzeichnisse als auch Dateien, der
zweite nur für Dateien.
Es gibt noch HKEY_CLASSES_ROOT\Folder - der ist, wie leicht zu
erraten, nur für Verzeichnisse.

Eine korrekte Lösung für Deine initiale Frage ist IMHO diese:

---- schnipp ----
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell]

[HKEY_CLASSES_ROOT\*\shell\DOS_Box]
@="DOS-Box hier"

[HKEY_CLASSES_ROOT\*\shell\DOS_Box\command]
@="cmd.exe /k for %%a in (\"%L\") do cd /d %~dpa"


[HKEY_CLASSES_ROOT\Folder\shell\DOS_Box]
@="DOS-Box hier"

[HKEY_CLASSES_ROOT\Folder\shell\DOS_Box\command]
@="cmd.exe /k"
---- schnapp ----

Man muss Dateien und Verzeichnisse unterschiedlich behandeln, deswegen
kann man
sich nicht auf HKEY_CLASSES_ROOT\AllFilesystemObjects beschränken.

Du erkennst sicher die for-Schleife wieder, allerdings habe ich sie
etwas korrigiert, um z.B.
das Problem mit den Leerzeichen im Verzeichnisnamen zu lösen:
Anführungszeichen.
Außerdem sollte der cd-Befehl mit dem Parameter /d aufgerufen werden,
weil sonst der
Wechsel auf ein anderes Laufwerk nicht funktioniert.
Diese reg-Datei tut bei mir wunderbar. Dadurch, dass beide Einträge
den gleichen Namen
"DOS-Box hier" haben, erkennt der Benutzer nicht, dass es sich um zwei
verschiedene
Einträge im Kontextmenü handelt, eben abhängig davon, ob es sich um
eine Datei oder
ein Verzeichnis handelt - genau das was man will.

Ich suche derzeit noch nach einer Lösung, um in der geöffneten DOS-Box
nicht den Titel
"C:\Windows\System32\cmd.exe" zu sehen, sondern z.B. nur "DOS-Box".
Außerdem, noch wichtiger für mich, würde ich gern bei einer Datei
diese bereits als Befehl
am Prompt stehen haben - etwa bei bat-Files könnte man dann schnell
noch einen Parameter
hintippen und das ganze gleich ausführen. Auch hier sollte der Titel
des DOS-Fensters
idealerweise den Namen der Datei haben.
Hat dazu jemand eine Idee?

Viele Grüße,

Dirk
Mike Neuer
2007-10-12 13:19:51 UTC
Permalink
Dirk,
Post by Dirk Schwarzmann
auch wenn ich etwas spät dran bin, ich glaube, ich kann Dir ein wenig
hab vielen Dank für Deine ausführliche Antwort die mir sehr weiter
geholfen hat!
Post by Dirk Schwarzmann
Post by Mike Neuer
Was müßte ich tun, wenn ich Deine und meine Lösung parallel im Menü
haben will, also ein "Öffne cmd" und ein "Öffne cmd mit dir"? Ich
[...]
Post by Mike Neuer
Leider überschreibt mir das mein "Öffne cmd". Was muß ich verändern,
damit ich beide im Menü habe?
Du legst im "shell" Zweig _zwei_ Zweige (aka Schlüssel) an mit
unterschiedlichem Namen.
[HKEY_CLASSES_ROOT\*\shell]
[HKEY_CLASSES_ROOT\*\shell\DOS_Box1]
@="DOS-Box Nr. 1 hier"
[HKEY_CLASSES_ROOT\*\shell\DOS_Box2]
@="DOS-Box Nr. 2 hier"
Jeder Zweig muss dann wiederum einen Schlüssel "command" haben (dieser
Name ist Pflicht),
in dessen Standard-Eintrag wie üblich der auszuführende Befehl steht.
Super, Du bist ne Wucht! Genau das ist die Lösung. Jetzt habe ich zwei
Einträge mit meinen Vorstellungen.
Post by Dirk Schwarzmann
Post by Mike Neuer
Jetzt frage ich mich was genau das Powertoys CmdHere.exe macht, wenn es
doch so einfach auch geht.
Meines Wissens macht das Programm auch nichts anderes, als Dir die
Arbeit abzunehmen,
das selbst in die Registry einzutragen.
Ich habe es deinstalliert und habe meine Lösung dafür genommen und mir
Post by Dirk Schwarzmann
Post by Mike Neuer
Was ist der Unterschied zwischen
HKEY_CLASSES_ROOT\AllFilesystemObjects\shell und
HKEY_CLASSES_ROOT\*\shell\cmd?
Der erste Eintrag gilt sowohl für Verzeichnisse als auch Dateien, der
zweite nur für Dateien.
Es gibt noch HKEY_CLASSES_ROOT\Folder - der ist, wie leicht zu
erraten, nur für Verzeichnisse.
---- schnipp ----
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell]
[HKEY_CLASSES_ROOT\*\shell\DOS_Box]
@="DOS-Box hier"
[HKEY_CLASSES_ROOT\*\shell\DOS_Box\command]
@="cmd.exe /k for %%a in (\"%L\") do cd /d %~dpa"
Warum braucht man hier eine for-Schleife? Was macht die denn genau? Und
Post by Dirk Schwarzmann
@="cmd.exe /k"
[HKEY_CLASSES_ROOT\Folder\shell\DOS_Box]
@="DOS-Box hier"
[HKEY_CLASSES_ROOT\Folder\shell\DOS_Box\command]
@="cmd.exe /k"
---- schnapp ----
Ich hab vor der Deinstallation in der Registry gesucht, welche Einträge
CmdHere.exe gemacht hat:

[HKEY_CLASSES_ROOT\Directory\shell\cmd]
@="Open Command Window Here"

[HKEY_CLASSES_ROOT\Directory\shell\cmd\command]
@="cmd.exe /k \"cd %L\""

Und was ist jetzt der Unterschied zwischen
"[HKEY_CLASSES_ROOT\Folder\shell\DOS_Box]" und
"[HKEY_CLASSES_ROOT\Directory\shell\cmd]"?
Post by Dirk Schwarzmann
Man muss Dateien und Verzeichnisse unterschiedlich behandeln, deswegen
kann man
sich nicht auf HKEY_CLASSES_ROOT\AllFilesystemObjects beschränken.
Ja aber nur, weil beim Verzeichnis noch ein "cd" gemacht werden muß.
Post by Dirk Schwarzmann
Du erkennst sicher die for-Schleife wieder, allerdings habe ich sie
etwas korrigiert, um z.B.
Anführungszeichen.
Außerdem sollte der cd-Befehl mit dem Parameter /d aufgerufen werden,
weil sonst der
Wechsel auf ein anderes Laufwerk nicht funktioniert.
Zum einen verstehe ich überhaupt nicht, warum ich überhaupt eine
for-Schleife brauche. Zum andere verstehe ich sie leider noch nicht.
Post by Dirk Schwarzmann
Diese reg-Datei tut bei mir wunderbar. Dadurch, dass beide Einträge
den gleichen Namen
"DOS-Box hier" haben, erkennt der Benutzer nicht, dass es sich um zwei
verschiedene
Einträge im Kontextmenü handelt, eben abhängig davon, ob es sich um
eine Datei oder
ein Verzeichnis handelt - genau das was man will.
Mich wundert es etwas, daß Deine Lösung für die Verzeichnis
funktioniert. Meine Tests haben ergeben, daß ohne einem "cd" im Kommando
quasi das übergeordnete Verzeichnis, also in dem ich gerade bin, nicht
aber das gewünschte Verzeichnis aufgelistet wird.
Post by Dirk Schwarzmann
Ich suche derzeit noch nach einer Lösung, um in der geöffneten DOS-Box
nicht den Titel
"C:\Windows\System32\cmd.exe" zu sehen, sondern z.B. nur "DOS-Box".
Außerdem, noch wichtiger für mich, würde ich gern bei einer Datei
diese bereits als Befehl
am Prompt stehen haben - etwa bei bat-Files könnte man dann schnell
noch einen Parameter
hintippen und das ganze gleich ausführen. Auch hier sollte der Titel
des DOS-Fensters
idealerweise den Namen der Datei haben.
Das hätt' auch manchmal was. :-)

Servus!
Mike
--
http://www.crazyaviation.com/deutsch.htm
Dirk Schwarzmann
2007-10-12 18:46:59 UTC
Permalink
Hi Mike,
Post by Mike Neuer
Post by Dirk Schwarzmann
[HKEY_CLASSES_ROOT\*\shell\DOS_Box\command]
@="cmd.exe /k for %%a in (\"%L\") do cd /d %~dpa"
Warum braucht man hier eine for-Schleife? Was macht die denn genau? Und
Post by Dirk Schwarzmann
@="cmd.exe /k"
Dein Befehl funktioniert nicht für Dateien, nur für Verzeichnisse.
In %L wird das ausgewählte Element übergeben, in diesem Fall also die
selektierte Datei samt Verzeichnis. Da man nicht in die Datei wechseln
kann, muss man es irgendwie hinkriegen, den Pfad vom Dateinamen zu
trennen. Das machen die Zeichen ~dp. Die for-Schleife wird nur genau
einmal durchlaufen, weil in %L auch nur _ein_ Pfad - der aktuelle - mit
dem Dateinamen steht. Nach der korrekten DOS-Syntax der for-Schleife
steht das jeweilige Element aus ("%L") in der Variablen %a, von der nur
der Pfad genommen wird: %~dpa
Es funktioniert nicht, die Schleife wegzulassen und einfach zu schreiben:
@="cmd.exe /k cd /d "%~dpL"
Warum das nicht geht weiß ich leider nicht, aber es ist so. Die
for-Schleife ist also eher als Trick zu sehen, um das gewünschte
Ergebnis zu erhalten.
Post by Mike Neuer
Ich hab vor der Deinstallation in der Registry gesucht, welche Einträge
[HKEY_CLASSES_ROOT\Directory\shell\cmd]
@="Open Command Window Here"
[HKEY_CLASSES_ROOT\Directory\shell\cmd\command]
@="cmd.exe /k \"cd %L\""
Das funktioniert eben nur für Verzeichnisse, aber dort ist noch nicht
mal notwendig.
Post by Mike Neuer
Und was ist jetzt der Unterschied zwischen
"[HKEY_CLASSES_ROOT\Folder\shell\DOS_Box]" und
"[HKEY_CLASSES_ROOT\Directory\shell\cmd]"?
Konnte ich auch nur durch Ausprobieren herausfinden:
Directory wirkt auf alle Verzeichnisse _außer_ dem Root-Directory, also
z.B. nicht auf C:\ - Folder aber schon. Wenn Du diese Unterscheidung
brauchen kannst, lege Dir auch unter Directory ein Kommando an,
ansonsten kannst Du es ignorieren.
Post by Mike Neuer
Mich wundert es etwas, daß Deine Lösung für die Verzeichnis
funktioniert. Meine Tests haben ergeben, daß ohne einem "cd" im Kommando
quasi das übergeordnete Verzeichnis, also in dem ich gerade bin, nicht
aber das gewünschte Verzeichnis aufgelistet wird.
Tja, exakt erklären kann ich Dir das auch nicht. Es funktioniert beides.
Es gibt in der Registry Einstellungsmöglichkeiten um die Funktionen der
DOS-Box zu beeinflussen (tippe in einer DOS Box mal cmd /?). Vielleicht
sind die Standardeinstellungen so gesetzt, dass auch die "Abkürzung"
funktioniert. Wenn das so ist, sollte man sich nicht blind darauf
verlassen dass es auch auf jedem anderen System funktioniert, sondern
doch lieber die lange Version "cd %L" nehmen.
Post by Mike Neuer
Post by Dirk Schwarzmann
Außerdem, noch wichtiger für mich, würde ich gern bei einer Datei
diese bereits als Befehl
am Prompt stehen haben - etwa bei bat-Files könnte man dann schnell
noch einen Parameter hintippen und das ganze gleich ausführen.
Das hätt' auch manchmal was. :-)
Ich brauch das ständig :-(

Viele Grüße,
Dirk
Mike Neuer
2007-10-14 16:26:23 UTC
Permalink
Dirk,

hab erneut vielen Dank!
Post by Dirk Schwarzmann
Hi Mike,
Post by Mike Neuer
Post by Dirk Schwarzmann
[HKEY_CLASSES_ROOT\*\shell\DOS_Box\command]
@="cmd.exe /k for %%a in (\"%L\") do cd /d %~dpa"
Warum braucht man hier eine for-Schleife? Was macht die denn genau? Und
Post by Dirk Schwarzmann
@="cmd.exe /k"
Dein Befehl funktioniert nicht für Dateien, nur für Verzeichnisse.
Bisher funktioniert er bei mir problemlos. Hast Du das bei Dir einmal
ausprobiert?
Post by Dirk Schwarzmann
In %L wird das ausgewählte Element übergeben, in diesem Fall also die
selektierte Datei samt Verzeichnis. Da man nicht in die Datei wechseln
kann, muss man es irgendwie hinkriegen, den Pfad vom Dateinamen zu
trennen. Das machen die Zeichen ~dp. Die for-Schleife wird nur genau
einmal durchlaufen, weil in %L auch nur _ein_ Pfad - der aktuelle - mit
dem Dateinamen steht. Nach der korrekten DOS-Syntax der for-Schleife
steht das jeweilige Element aus ("%L") in der Variablen %a, von der nur
der Pfad genommen wird: %~dpa
Jetzt hat es bei mir geschnackelt. Danke! Ralf, wenn Du das liest, damit
ist meine Frage nach dem a hinfällig!
Post by Dirk Schwarzmann
@="cmd.exe /k cd /d "%~dpL"
Warum das nicht geht weiß ich leider nicht, aber es ist so. Die
for-Schleife ist also eher als Trick zu sehen, um das gewünschte
Ergebnis zu erhalten.
Das wäre meine nächste Frage gewesen ;-)
Post by Dirk Schwarzmann
Post by Mike Neuer
Ich hab vor der Deinstallation in der Registry gesucht, welche Einträge
[HKEY_CLASSES_ROOT\Directory\shell\cmd]
@="Open Command Window Here"
[HKEY_CLASSES_ROOT\Directory\shell\cmd\command]
@="cmd.exe /k \"cd %L\""
Das funktioniert eben nur für Verzeichnisse, aber dort ist noch nicht
mal notwendig.
Ich hab es jetzt so übernommen und es funktioniert.
Post by Dirk Schwarzmann
Post by Mike Neuer
Und was ist jetzt der Unterschied zwischen
"[HKEY_CLASSES_ROOT\Folder\shell\DOS_Box]" und
"[HKEY_CLASSES_ROOT\Directory\shell\cmd]"?
Directory wirkt auf alle Verzeichnisse _außer_ dem Root-Directory, also
z.B. nicht auf C:\ - Folder aber schon. Wenn Du diese Unterscheidung
brauchen kannst, lege Dir auch unter Directory ein Kommando an,
ansonsten kannst Du es ignorieren.
Super, vielen Dank! Wieder was gelernt :-)
Post by Dirk Schwarzmann
Post by Mike Neuer
Mich wundert es etwas, daß Deine Lösung für die Verzeichnis
funktioniert. Meine Tests haben ergeben, daß ohne einem "cd" im Kommando
quasi das übergeordnete Verzeichnis, also in dem ich gerade bin, nicht
aber das gewünschte Verzeichnis aufgelistet wird.
Tja, exakt erklären kann ich Dir das auch nicht. Es funktioniert beides.
Stimmt. Ich habe es eben noch einmal ausprobiert. Ich bleibe jetzt bei
meiner Lösung die ich dank Eurer Hilfe erstellt habe.
Post by Dirk Schwarzmann
Es gibt in der Registry Einstellungsmöglichkeiten um die Funktionen der
DOS-Box zu beeinflussen (tippe in einer DOS Box mal cmd /?). Vielleicht
sind die Standardeinstellungen so gesetzt, dass auch die "Abkürzung"
funktioniert. Wenn das so ist, sollte man sich nicht blind darauf
verlassen dass es auch auf jedem anderen System funktioniert, sondern
doch lieber die lange Version "cd %L" nehmen.
Ich habe sonst nichts verstellt.
Post by Dirk Schwarzmann
Post by Mike Neuer
Post by Dirk Schwarzmann
Außerdem, noch wichtiger für mich, würde ich gern bei einer Datei
diese bereits als Befehl
am Prompt stehen haben - etwa bei bat-Files könnte man dann schnell
noch einen Parameter hintippen und das ganze gleich ausführen.
Das hätt' auch manchmal was. :-)
Ich brauch das ständig :-(
Vielleicht kann Dir einer der alten Windows-Füchse helfen, also Ralf
oder Helmut?

Schönes Wochenende!
Mike
--
http://www.crazyaviation.com/deutsch.htm
Ralf Breuer
2007-10-14 18:55:41 UTC
Permalink
Post by Mike Neuer
Post by Dirk Schwarzmann
Post by Mike Neuer
Post by Dirk Schwarzmann
Außerdem, noch wichtiger für mich, würde ich gern bei einer Datei
diese bereits als Befehl
am Prompt stehen haben - etwa bei bat-Files könnte man dann schnell
noch einen Parameter hintippen und das ganze gleich ausführen.
Das hätt' auch manchmal was. :-)
Ich brauch das ständig :-(
Vielleicht kann Dir einer der alten Windows-Füchse helfen, also Ralf
oder Helmut?
Vielleicht den "dir" von Helmut, im Fenster Pfeil hoch, modifizieren und
enter.
--
Gruß
Ralf
Ich mag kein TOFU. Siehe http://einklich.net/usenet/zitier.htm
Bei Direkt-Mails NOSPAM entfernen
Dirk Schwarzmann
2007-10-16 04:08:25 UTC
Permalink
Post by Ralf Breuer
Post by Dirk Schwarzmann
Außerdem, noch wichtiger für mich, würde ich gern bei einer Datei
diese bereits als Befehl
am Prompt stehen haben - etwa bei bat-Files könnte man dann schnell
noch einen Parameter hintippen und das ganze gleich ausführen.
Vielleicht den "dir" von Helmut, im Fenster Pfeil hoch, modifizieren und
enter.
Die Idee ist gut, leider funktioniert sie nicht :-(
Der Befehl, der initial über den reg-Eintrag abgesetzt wird, erscheint
nicht in der History des cmd-Fensters :-(((
Auch das Verketten von Befehlen per & fruchtet nicht.

Grüße,
Dirk
Ralf Breuer
2007-10-16 06:17:18 UTC
Permalink
Post by Dirk Schwarzmann
Die Idee ist gut, leider funktioniert sie nicht :-(
Schade. Z.Z. keine Idee ;-(
--
Gruß
Ralf
Ich mag kein TOFU. Siehe http://einklich.net/usenet/zitier.htm
Bei Direkt-Mails NOSPAM entfernen
Loading...