Registrierungsbefehl für das Kontextmenüelement zum Kopieren des Ordnernamens

279
Hashim

Ich muss oft den Namen eines Ordners in Windows 7 schnell kopieren und versuche daher, ein Äquivalent zu dem Copy as pathElement zu erstellen, das in den erweiterten Kontextmenüs angezeigt wird (z. B. wenn Shift+ Right Click), wobei nur der Name des ausgewählten Ordners in das Verzeichnis kopiert wird Zwischenablage.

Ich habe den Registrierungsschlüssel erstellt unter:

HKEY_CLASSES_ROOT\Directory\shell\Copy folder name\command 

... wo sich all meine ähnlichen Kontextmenü-Ergänzungen für Ordner befinden, und das kann man hier sehen:

enter image description here

Bisher konnte ich den Code, der von der Taste ausgeführt werden muss, nicht ordnungsgemäß ausführen. Ich bin auf diese Lösung gestoßen, um den aktuellen Ordner eines Verzeichnisses zu packen, und diesen, um den Verzeichnisnamen an die Zwischenablage weiterzuleiten, und fügt sie zusammen, um Folgendes zu erhalten:

for %* in (.) do set FolderName=%~nx* && echo %FolderName%| clip 

Dieser Code funktioniert genau wie erwartet in der Befehlszeile.

Das Vorbereiten cmd /cdarauf, das zum Ausführen einer CMD-Instanz von der Registry aus erforderlich ist, ergibt Folgendes:

cmd /c for %* in (.) do set FolderName=%~nx* && echo %FolderName%| clip 

enter image description here

Platzieren Sie dies jedoch in den Wertedaten des DefaultZeichenfolgenwerts im \Copy folder name\commandSchlüssel, klicken Sie mit der rechten Maustaste auf einen Ordner und klicken Sie auf " Ordnernamen kopieren" .

Wenn Sie es in Anführungszeichen packen, geschieht auch nichts:

cmd /c "for %* in (.) do set FolderName=%~nx* && echo %FolderName%| clip" 

Was fehlt mir hier?

2
@PimpJuiceIT Das Fluchen der Pipe tut nichts, und das letzte oder erste Zitat wird auch nicht beseitigt. Hashim vor 3 Jahren 1
Wie wäre es mit 'cmd / V: ON / c "für% * in (.), Setzen Sie FolderName =% ~ nx * && echo! FolderName! | Clip" ` Pimp Juice IT vor 3 Jahren 0
Wenn es von einer BAT-Datei aus funktioniert, können Sie dies von Ihrem Kontexteintrag aus aufrufen: `" C: \\ folderToClip.bat \ "% 1 \" `` HackSlash vor 3 Jahren 0
@PimpJuiceIT Ja, ich hatte bereits versucht, sowohl die verzögerte Variablenerweiterung als auch die Befehlserweiterung zu aktivieren und zu deaktivieren. Ich habe auch versucht, `/ k` anstelle von` / c` zu verwenden, in der Hoffnung, dass das Befehlsfenster für Debugging-Zwecke geöffnet bleiben würde, und dito für `pause` - kein solches Glück. Hashim vor 3 Jahren 0
@HackSlash Es ist ein letzter Ausweg, aber ich würde lieber einen so kurzen Befehl ohne externe Abhängigkeiten erledigen. Hashim vor 3 Jahren 0
Okay, ich nehme an, Sie haben versucht, "FolderName =% ~ nx *" zu verwenden, indem Sie die Variable auch so zitieren ... dh "cmd / V: ON / c" für% * in (.) Set "FolderName =% ~ nx" * "&& echo! Ordnername! | clip" `? Ich habe bemerkt, dass auf diese Weise auch das hintere weiße Feld abgeschnitten wird. Pimp Juice IT vor 3 Jahren 0

0 Antworten auf die Frage