[英]C++ ShellExecute batch script won't recognize commands
如標題所示,我正在嘗試通過“ ShellExecute”功能打開一個.bat文件。
它可以與非常基本的.bat腳本一起使用,例如“ hello world”腳本,但不能與其他包含用於運行游戲服務器的命令的腳本一起使用。 例如,以下是“殺人樓層1”服務器的批處理腳本:
ucc server KF-Mountainpass.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6?GamePassword=genrl -log=server.log
PAUSE
請注意,當手動單擊該批處理時,該批處理效果很好,但是通過ShellExecute打開時會出現以下錯誤:
"ucc" is not recognized as an internal or external command, operable program or batch file.
我還在其他游戲服務器的其他批處理文件上進行了測試,結果相同。
所以,這是到目前為止我嘗試過但沒有奏效的列表:
ShellExecute(NULL, "open", "cmd.exe", "C:\\windows\\system32\\cmd.exe /C C:\\Cartella_Server\\Server_KF1\\System\\KF_Server_Launcher.bat", NULL, SW_SHOW);
ShellExecute(NULL,"open", C:\\Cartella_Server\\Server_KF1\\System\\KF_Server_Launcher.bat", NULL, NULL, SW_SHOW);
ShellExecute(NULL, "open", "cmd.exe", "/C C:\\Cartella_Server\\Server_KF1\\System\\KF_Server_Launcher.bat", NULL, SW_SHOW);
有什么解決辦法嗎?
在此先感謝您的時間 :)
ucc
程序最有可能與啟動器腳本位於同一目錄中。 因此,當您單擊它時它可以工作,因為您的當前目錄與該文件位於同一目錄,但是在您運行程序時,當前目錄是不同的。
解決方案-根據https://msdn.microsoft.com/zh-cn/library/windows/desktop/bb762153(v=vs.85).aspx ,在第五個ShellExecute參數中提供適當的目錄
這是因為腳本正在加載到cmd.exe目錄中
為什么? 因為您沒有填寫工作目錄字段。
看看ShellExecute的第五個參數: https : //msdn.microsoft.com/zh-cn/library/windows/desktop/bb762153%28v=vs.85%29.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.