Ich möchte einfach eine Datei im Explorer auswählen und mit „Senden an“ einem Tool diese Datei geben. Einfach gesagt. So spare ich mir etwas mühselige Tipparbeit im der Console.
Ich wusste mal, wie es geht. Aber ich werde älter und habe es vergessen – also versuchte ich einer Suchmaschine zu erklären, was ich brauche.
"senden an" parameter übergeben console
Naja – Ergebnisse gibt es darauf viele, für allerlei Programmiersprachen, für mich wenig zielführend.
Also schreibe ich auf, was ich herausgefunden habe, dann muss ich es nicht nochmals suchen.
Wo sind die Verknüpfungen für das „Senden an“-Menü?
Ich hatte zunächst in der Registry gesucht, dann wieder im Internet gesucht … und dann fiel mir ein, daß der FreeCommander den Pfad ja anbietet. Ich verwende gerne den FreeCommander, der extra ein Menü für Systempfade hat und so auch diesen Pfad mit 2 Klicks erreichbar macht. Und er ist wesentlich komfortabler zu bedienen als der Windows-Explorer:
C:\Users\Benutzername\AppData\Roaming\Microsoft\Windows\SendTo
Mein „Senden an“-Menü hat diese Einträge… – und im Ordner sind dazu diese Dateien:
Es gibt also offenbar noch weitere Speicherorte für dieses Menü – weil es kein „Objekt“ für den Eintrag „Redmi Note 9 Pro“ in der Dateiliste gibt. Aber das suche ich gerade nicht.
Die Datei „desktop.ini“ hat für die „Objekte“, die nur wenige Bytes groß sind, Detailinformationen:
[LocalizedFileNames] Fax Recipient.lnk=@%SystemRoot%\system32\FXSRESM.dll,-120 Mail Recipient.MAPIMail=@sendmail.dll,-4 Desktop (create shortcut).DeskLink=@sendmail.dll,-21 Compressed (zipped) Folder.ZFSendToTarget=@zipfldr.dll,-10148 Documents.mydocs=@shell32.dll,-34575 Bluetooth-Dateiübertragung.LNK=@C:\Windows\System32\fsquirt.exe,-2343
Was das alles bedeutet, steht in der Dokumentation von Windows.
Dateien mit der Erweiterung .lnk sind Verknüpfungen, die es beispielsweise auch erlauben, ein Icon auszuwählen und Sicherheitseinstellungen vorzunehmen, die bei der Ausführung des verbundenen Programms vielleicht notwendig sind (zB auf Erweiterte Eigenschaften: „als Administrator ausführen“).
Wie kann ich das Menü bearbeiten?
Oder wie füge ich jetzt eine neue Funktion hinzu?
Da es ein Dateiordner ist, kann man dort auch einfach Dateien hineinkopieren oder mit „Neu“ auch direkt dort anlegen. Man kann dabei einen beliebigen Typ auswählen – die angelegte Datei hat zunächst keinen Inhalt (0 Byte) und der Dateiname kann umbenannt werden – zB von Neu.docx (Word-Dokument) zu tool.bat – dieser Name steht dann so im Menü.
Aber nur weil das geht, muss man es nicht so machen.
Und weil es eine Dateiverwaltung ist, kann so eine Datei auch einfach daraus gelöscht werden – ich brauche und habe ja beispielsweise kein Fax. Also weg damit…
Alternativ kann man sich von einem Programm eine Desktopverknüpfung erstellen (Rechtsklick auf das Programm – Senden an Desktop). Danach per Drag&Drop in unseren Ordner kopieren (also linke Maustaste auf dem Icon halten, dann gehalten zum Ordner bewegen und dort die Maustaste loslassen).
Wird das Kontextmenü jetzt wieder auf irgendeinem Icon geöffnet (also mit rechter Maustaste anklicken) und dann mit dem Mauszeiger auf „Senden an“ gezeigt, erscheint im Kontextmenü jetzt der Eintrag für dieses soeben eingefügte Programm (oder die angelegte Datei).
Funktionen verbinden
Wir haben also einen neuen Eintrag im „Senden an“-Menü angelegt: tool.bat
In einer Verknüpfung (zB UPX.lnk) kann ebenfalls eine Batch-Datei angegeben sein.
Eine .bat-Datei ist eine textbasierte Stapelverarbeitungsdatei. Also eine Sammlung von DOS- und weiteren Programm-Befehlen, die nacheinander abgearbeitet werden. Aber in tool.bat steht noch nichts drin – schreibe ich also hinein:
@echo off D:\tools\pdf\pdftotext.exe -raw "%1" pause
pdftotext.exe ist das Beispiel-Programm, das die gewünschte Funktion ausführen wird, nachdem ich den Eintrag im Kontextmenü anklickte. Nachfolgend in der selben Befehlszeile kommen die Parameter, die das Programm optional steuern (hier -raw und „%1“).
Der Interpreter des Scrips setzt an die Stelle „%1“ (Variable) den Dateinamen mit seinem Pfad ein, den ich angeklickt hatte (nebenbei: in %0 ist der Pfad der .bat-Datei gespeichert).
In einer Verknüpfung .lnk ist im Eingabefeld „Ziel:“ nach der verbunden Datei die Angabe %1 übrigens nicht nötig, weil Windows es automatisch anfügt. Diese Information hatte ich lange gesucht, aber keine besuchte Webseite erwähnte dieses Detail.
Erwartet das Programm aber an einer bestimmten Stelle den übergebenen Dateinamen (weil davor noch Optionen stehen müssen) oder eine besondere Schreibweise (zB in Anführungszeichen), dann ist es besser, eine Batchdatei zu verlinken.
Je nach dem, was das Programm macht, bekomme ich ein Ergebnis oder einen Fehler (deshalb steht danach das Kommando pause, das die Abarbeitung der Kommandozeilen pausiert, bis der Nutzer eine Taste gedrückt hat. Ist die Batchdatei am Ende, wird das Konsolenfenster geschlossen).