Hinzufügen einer EXE-Datei zum Standardpfad, ohne das Verzeichnis hinzuzufügen

22

Zum Beispiel möchte ich meinem PATH Notepad ++ hinzufügen, aber das Verzeichnis enthält auch uninstall.exeeinige andere Dateien / ausführbare Dateien und ich möchte nicht, dass sie meinen Pfad "verschmutzen". Kann ich nur die hinzufügen notepad++.exe?

Louis Rhys
quelle

Antworten:

17

Sie können einem Verzeichnis, das sich in Ihrem Pfad befindet und ungefähr so ​​aussieht, ein Batch-Skript hinzufügen:

@echo off

:: Notepad++ execution

if [%1]==[-h] goto :HELP
if [%1]==[--help] goto :HELP
if [%1]==[/?] goto :HELP
goto :START

:START
start "" /i "%ProgramFiles(x86)%\notepad++\notepad++.exe" %*
goto :EOF

:HELP
echo -------------------------------
echo Notepad++ Command Argument Help
echo -------------------------------
echo Usage :
echo.
echo notepad++ [--help] [-multiInst] [-noPlugins] [-lLanguage] [-nLineNumber] [-cColumnNumber] [-xPos] [-yPos] [-nosession] [-notabbar] [-ro] [-systemtray] [-loadingTime] [fullFilePathName]
echo.
echo     --help : This help message
echo     -multiInst : Launch another Notepad++ instance
echo     -noPlugins : Launch Notepad++ without loading any plugin
echo     -l : Launch Notepad++ by applying indicated language to the file to open
echo     -n : Launch Notepad++ by scrolling indicated line on the file to open
echo     -c : Launch Notepad++ on scrolling indicated column on the file to open
echo     -x : Launch Notepad++ by indicating its left side position on the screen
echo     -y : Launch Notepad++ by indicating its top position on the screen
echo     -nosession : Launch Notepad++ without any session
echo     -notabbar : Launch Notepad++ without tabbar
echo     -ro : Launch Notepad++ and make the file to open read only
echo     -systemtray : Launch Notepad++ directly in system tray
echo     -loadingTime : Display Notepad++ loading time
echo     -alwaysOnTop : Make Notepad++ always on top
echo     fullFilePathName : file name to open (absolute or relative path name)
echo.
goto :EOF

:EOF

Sie können es benennen notepad++.cmd. In der Hilfe können Sie auf einfache Weise Informationen zu den Schaltern abrufen.

Ich habe all diese Skripte und Befehlszeilenprogramme in ein Verzeichnis gestellt, das hinzugefügt wird zu %PATH%: C:\Users\Public\Command\ ... und dieses Verzeichnis wird mit allen Computern und virtuellen Maschinen synchronisiert.

paradroid
quelle
8

Erstellen Sie eine Batchdatei mit folgendem Inhalt:

@"C:\Program Files\Git\bin\git.exe" %*

Dies sollte als .batDatei gespeichert werden, z. B. git.batin einem Verzeichnis, das sich in Ihrem befindet PATH.

@Unterdrückt das Echo des Befehls an die aufrufende Shell. Die Anführungszeichen ""verhindern, dass Leerzeichen als Argumentbegrenzer interpretiert werden. %*Fügt Argumente in die Batch-Datei ein, stattdessen in die angegebene ausführbare Datei.

Sie können die ausführbare Datei jetzt mit dem zuvor angegebenen Teil des Stapeldateinamens aufrufen .bat. In meinem Fall git.

Verweise:

Matt Joiner
quelle
Bei vielen Programmen bleibt CMD hängen, bis Sie es schließen. Sie müssen verwenden start, um das zu vermeiden, wie in meiner Antwort gezeigt.
Paradroid
@paradroid: Danke, aber es ist normal, dass das Terminal dem übergeordneten Terminal zugeordnet bleibt, sofern Sie nicht dazu aufgefordert werden. Der Benutzer sollte es tun, start gitanstatt es für ihn tun zu lassen. Das Batch-Skript funktioniert besser, wenn es execin den angeforderten Prozess eingefügt wird . Dies ist unter Windows jedoch nicht möglich: serverfault.com/questions/315077/… . Ich könnte voranstellen, callaber es wäre umständlich und meist sinnlos.
Matt Joiner
3

Ziehen Sie eine Verknüpfung notepad++.exezu C:\Windows\System32.


Alternativ können Sie, wie von @Synetech Inc. vorgeschlagen, Ihre Verknüpfungen in einem separaten Verzeichnis ablegen (z. B. C:\Shortcuts) und dieses Verzeichnis dann hinzufügen zu %PATH%:

setx PATH "%PATH%;C:\Shortcuts"

Wie aus einigen Kommentaren hervorgeht, funktioniert dies nur im Dialogfeld "Ausführen". Damit die Verknüpfungen über eine Eingabeaufforderung gestartet werden können, müssen Sie Ihrer PATHEXT-Umgebungsvariablen die Verknüpfungserweiterung (.LNK) hinzufügen.

setx PATHEXT %pathext%;.LNK

Verweise:

Wie kann ich Anwendungen einfach über das Dialogfeld Ausführen starten?

Mateen Ulhaq
quelle
1
Dies ist die bevorzugte Lösung (im Gegensatz zu einer Batch-Datei). Erstellen Sie eine Verknüpfung dazu in einem (anderen) Verzeichnis im Pfad - verschmutzen Sie nicht die Windows-Verzeichnisse! Ich habe einen Ordner speziell für diesen Zweck genannt Shortcuts.
Synetech
1
Das ist die falsche Syntax für setx. Wenn Sie kein Gleichheitszeichen verwenden und IIRC, müssen Sie den gesamten Pfad in Anführungszeichen setzen, wenn der aktuelle Pfad %PATH%Leerzeichen enthält (was auch immer der Fall ist ).
Paradroid
Und verwenden Sie keine SETXTildes für Variablen anstelle von Prozenten, um deren Erweiterung zu vermeiden? Ich weiß, dass ein Env-Var-Einstellungstool funktioniert ...
Synetech
2
Das geht nicht. Standardmäßig (ich ziehe git.exe) hat "git - Shortcut", das Umbenennen in Kombinationen von "git.exe", "git", "git.cmd" usw. keine Auswirkung. Die Verknüpfung wird nicht bestätigt.
Matt Joiner
3
Dies funktioniert nur beim Aufrufen über das Run AsDialogfeld, nicht über die Eingabeaufforderung.
Matt Joiner
1

Erstellen Sie einfach einen symbolischen Link mit mklinkin einem Ordner in dem Pfad.

zB (in der Administrator-Eingabeaufforderung)

mklink "C:\Users\Me\Documents\Paths\np.exe" "C:\Program Files (x86)\Notepad++\notepad++.exe"
Luigi Plinge
quelle
0

Der Registrierungsschlüssel "App Paths" führt genau dies aus: Setzen Sie den Pfad zu "notepad ++. Exe" auf "\ program files \ ...", und Sie können ihn wie jede ausführbare Datei von "Start-Run", "cmd", starten ein Verzeichnis in% PATH%.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

Referenz: /programming/4822400/register-an-exe-so-you-can-run-it-from-any-command-line-in-windows

patraulea
quelle
Dies macht es nicht ausführbar von cmd - nur von start-run, oder in cmd muss "start" vorangestellt werden, wie in "start myapp.exe"
Tahir Hassan
Der Eingabeaufforderung hierzu mangelt es, wie vereinbart, an der Fähigkeit, diese Variable zu erkennen. PowerShell erkennt es. Diese Lösung gilt, was noch wichtiger ist, nur für das Verzeichnis und daher nicht für das Thema.
Todd Partridge
0

Die hier vorgestellten Lösungen haben mir nicht gefallen, deshalb habe ich etwas anderes ausprobiert.

  1. Installieren Sie die Link-Shell-Erweiterung (weitere Informationen hier )

  2. Erstellen Sie irgendwo einen Ordner, in dem alle von Marteen vorgeschlagenen Verknüpfungen gespeichert werden, und fügen Sie ihn Ihrem Ordner hinzu %PATH%. Ich C:\Shortcutshabe den Rapid Environment Editor erstellt und verwendet , um ihn meinem PATH hinzuzufügen.

  3. Klicken Sie mit der rechten Maustaste auf die Datei, die Sie Ihrem Pfad hinzufügen möchten (im Explorer), und klicken Sie auf "Linkquelle auswählen".

  4. Klicken Sie mit der rechten Maustaste in den soeben erstellten Ordner und klicken Sie auf Drop As > Symbolink Link.

  5. Benennen Sie den symbolink-Link um, wenn Sie möchten.

Das ist es. Sie sollten jetzt über die Befehlszeile auf Ihr Programm zugreifen können. Wenn Sie den neuen Ordner gerade Ihrem PATH hinzugefügt haben, müssen Sie cmd.exe oder Cmder oder ConEmu oder was auch immer Sie verwenden, neu starten. Danach können Sie neue Programme hinzufügen, ohne neu zu starten.

mpen
quelle