![](/img/trans.png)
[英]Windows: Can the return value of a process running C++ code be accessed if you don't run from command line?
[英]"Register" an .exe so you can run it from any command line in Windows
如何使 .exe 文件可以從 Windows 命令窗口中的任何位置訪問? 是否有一些必須輸入的注冊表項?
您需要確保 exe 位於PATH
環境變量中的文件夾中。
您可以通過將其安裝到已經在PATH
上的文件夾中或將您的文件夾添加到PATH
中來做到這一點。
您可以讓您的安裝程序執行此操作 - 但您可能需要重新啟動機器以確保它被拾取。
視窗 10、8.1、8
打開開始菜單,
Edit environment variables
Edit the system environment variables
Environment variables...
按鈕System Variables
框中找到path
變量Edit
New
.exe
或batch
文件的目錄路徑(目錄意味着從路徑中排除文件名)Ok
並
您可以添加以下注冊表項:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\myexe.exe
在此項中,添加包含 exe 文件路徑的默認字符串值。
您必須將.exe
文件的路徑放入環境變量路徑中。 轉到“我的電腦 -> 屬性 -> 高級 -> 環境變量 -> 路徑”並通過將.exe
的目錄添加到路徑中來編輯路徑。
我個人更喜歡的另一個解決方案是使用RapidEE進行更流暢的變量編輯。
與其將可執行文件放在路徑上的目錄中,不如在啟動程序的路徑上的目錄中創建一個批處理文件。 這樣您就不會將可執行文件與其支持文件分開,也不會無意中將同一目錄中的其他內容添加到路徑中。
這樣的批處理文件可能如下所示:
@echo off
start "" "C:\Program Files (x86)\Software\software.exe" %*
假設我的 exe 是 C:\Program Files\AzCopy\azcopy.exe
命令/CMD/批處理
SET "PATH=C:\Program Files\AzCopy;%PATH%"
電源外殼
$env:path = $env:path + ";C:\Program Files\AzCopy"
我現在可以從任何 shell inc 命令提示符、powershell、git bash 等的任何位置簡單地鍵入和使用azcopy
令人驚訝的是,在 windows 上這樣一個簡單的任務沒有簡單的解決方案,我創建了這個小 cmd 腳本,您可以使用它來定義 windows 上的別名(說明位於文件頭本身):
https://gist.github.com/benjamine/5992592
這與 NPM 或 ruby gems 等工具用於注冊全局命令的方法幾乎相同。
要在 Windows 中為未自動添加到路徑的應用程序獲取類似 bash 的別名,而無需手動將每個應用程序添加到路徑中,這是我想出的最干凈的解決方案,它對系統所做的更改最少,並且擁有最多以后定制的靈活性:
mkdir c:\aliases
setx PATH "c:\aliases;%PATH%"
要啟動C:\path to\my program.exe
,傳入所有參數,在新窗口中打開它,創建c:\aliases\my program.bat
文件,內容如下(有關啟動的詳細信息,請參見NT 啟動命令命令):
@echo off
start "myprogram" /D "C:\path to\" /W "myprogram.exe" %*
要啟動C:\path to\my program.exe
,傳入所有參數,但在同一窗口中運行它(更像 bash 的操作方式),請創建c:\aliases\my program.bat
文件,其中包含以下內容:
@echo off
pushd "C:\path to\"
"my program.exe" %*
popd
如果您根本不需要應用程序更改當前工作目錄即可運行,您只需將符號鏈接添加到您的別名文件夾中的可執行文件:
cd c:\aliases\
mklink "my program.exe" "c:\path to\my program.exe"
添加到 PATH,步驟如下(Windows 10):
將其放在 c:\windows 目錄中或將您的目錄添加到環境設置中的“路徑”(windows-break - tab advanced)
問候,//t
為了使它工作
您需要使用名稱鍵Path
修改環境變量的值,您可以添加任意數量的路徑,用;
分隔它們。 . 您給它的路徑不能包含可執行文件的名稱。
如果為變量Path
添加路徑,則可以從 cmd 或 porweshell 調用其中的所有可執行文件,方法是在不帶.exe
的情況下寫入它們的名稱,並且這些名稱不區分大小寫。
以下是如何從 python 腳本創建系統環境變量:
以管理員權限運行它以使其工作非常重要。 為了更好地理解代碼,只需閱讀上面的注釋。
在 Windows 10 上測試
import winreg
# Create environment variable for call the program from shell, only works with compiled version
def environment_var(AppPath):
# Point to the registry key of the system environment variables
key = winreg.CreateKey(winreg.HKEY_LOCAL_MACHINE, r'System\CurrentControlSet\Control\Session Manager\Environment')
def add_var(path):
# Add the variable
winreg.SetValueEx(key, 'Path', 0, winreg.REG_SZ, path)
winreg.CloseKey(key)
try:
# Try to get the value of the Path variable
allPaths = winreg.QueryValueEx(key, 'Path')[0]
except Exception:
# Create the Path variable if it doesn't exist
add_var(path=AppPath)
return
# Get all the values of the existing paths
Path=allPaths.split(';')
# If the Path is empty, add the application path
if Path == ['']:
add_var(path=AppPath)
return
# Check if the application path is in the Path variable
if AppPath not in Path:
# Add the application path to the Path environment variable and add keep the others existing paths
add_var(path=AppPath+';'+allPaths)
# Only run this if the module is not imported by another
if __name__ == "__main__":
# Run the function
environment_var(AppPath=".")
您可以在winreg 文檔中找到更多信息
這對我有用:
打開cmd,寫下.bat文件的名字就可以了
例子
想要在特定鏈接上打開 chrome
用這個創建一個 .bat 文件(例如,將其保存為 blog.bat )
開始“”“https://pythonprogramming.altervista.org/”
從窗口桌面左下角的搜索欄中進入環境變量設置
進入環境變量(底部按鈕)然后進入路徑(底部)
添加路徑,例如 G:\myapp_launcher
單擊應用或確定
現在打開 cmd 並寫博客:chrome 將在該頁面上打開
做同樣的事情來打開一個文件...在文件夾 G:\myapp_launcher (或任何你稱之為放置批處理文件的文件夾)中創建一個 .bat,稱之為 run.bat 或 myapp.bat 或其他任何東西(寫在里面其中啟動 filemane.pdf 或您要打開的任何文件),保存后,您可以使用 run 或 myapp 或任何您稱為批處理文件的文件從 cmd 運行該文件。
您也可以將文件移動到C:\Windows
,但您需要使用管理員權限並注意。
我說的注意是什么意思?
您需要注意,因為如果您在此文件夾中不正確地和意外地修改、刪除和進行一些更改,您也可能會弄亂 Windows 系統文件(Windows 甚至可能不再工作)......
示例:不要添加與 Windows 文件同名的文件
在安裝中使用 1 行批處理文件:
SETX PATH "C:\Windows"
運行bat文件
現在將你的.exe 文件放在c:\windows 中,你就完成了。
您可以在命令行中鍵入“exename”,它會運行它。
另一種方法是通過將.LNK
添加到您的 $PATHEX。 然后只需為您的可執行文件創建一個快捷方式(即:yourshortcut.lnk)並將其放入$PATH 中列出的任何目錄中。
警告注意:知道位於 $PATH 中列出的任何目錄中的任何 .lnk 文件現在也都是“PATH'ed”。 出於這個原因,我更喜歡前面提到的批處理文件方法。
我不是程序員或類似的人,但這是我的簡單解決方案:
PATH
; 這將防止您無意中將不需要的文件放入PATH
中。
如果您認為此答案需要改進,請隨時發表評論。 干杯🍻。
PS 無需重新啟動系統或文件資源管理器。 😀
最好的方法是將 .EXE 文件的文件夾路徑添加到環境變量中的路徑值中。
我不確定這適用於哪些版本的 Windows,但我將一些有用的.bat
和.exe
文件放入:
%LOCALAPPDATA%\Microsoft\WindowsApps
(相當於%USERPROFILE%\AppData\Local\Microsoft\WindowsApps
)
這似乎在我的默認路徑上。 我很想看看這是否是一般情況。
DOSKEY是 Microsoft 版本的“別名”。 該功能已內置於所有版本的 Windows(以及大多數版本的 DOS)中
doskey fred=c:\myApps\myprog.exe
每次打開命令提示符時都需要加載它。 您可以通過多種不同的方法來做到這一點。 一種方法是
Make a file containing all the doskey macros you want:
doskey fred=c:\whatever.exe
doskey alan=c:\whateverelse.exe
Change the file type / file name / file extension to .CMD or .BAT
ren myfile.txt myfile.CMD
Add the CMD/BAT file to your command processor autoruns key:
reg ADD \\HKCU\Software\Microsoft\Command Processor /v autorun /t REG_SZ /d myfile.CMD
有關更多信息,請參閱
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/doskey
和https://serverfault.com/a/1049766/142882
(serverfault.com/questions/95404/is-there-a-global-persistent-cmd-history)
如果有人在我之后尋找這個,這是一種添加路徑的非常簡單的方法。
將路徑發送到如圖所示的文件,從文件中復制並粘貼它,並在末尾添加特定路徑,並在新路徑前加上分號。 它可能需要在 Windows 7 之前進行調整,但至少它是一個簡單的起點。
最好的方法是將 .EXE 文件安裝到 windows/system32 文件夾中。 這樣你就可以從任何位置運行它。 這是可以找到 .exe 之類 ping 的同一個地方
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.