我正在使用處理可執行檔案打開 bat 檔案。它所做的只是
start Exe2.exe然后查找檔案,直到它們被創建。該 bat 位于一個特定的檔案夾中,該檔案夾也有 Exe2.exe。當我通過雙擊打開它時,它按預期作業,但每當我使用
try {
p1 = r.exec("cmd /c start " Path "/open.bat");
}
catch(Exception c) {
}
它打開 bat 檔案,我收到錯誤“Windows 找不到 Exe2.exe”,在控制臺中這是它運行的內容 C:\Users\syste\Downloads\processing-3.5.4> start Exe2.exe
起始路徑與 open.bat 檔案所在的路徑不同。它從保存處理的地方開始。如果有辦法讓它從正確的檔案夾開始,或者以某種方式通過處理路徑。我不想手動硬編碼路徑,因為我希望它在不同的計算機上運行
open.bat 內容:
start Exe2.exe
cls
@ECHO OFF
SET LookForFile="answer.txt"
:CheckForFile
IF EXIST %LookForFile% GOTO FoundIt
GOTO CheckForFile
:FoundIt
echo the number is:
more answer.txt
del "answer.txt"
GOTO CheckForFile
簡單的草圖重現:
String Path;
Runtime r = Runtime.getRuntime();
Process p1;
void setup(){
Path = sketchPath() "/lib";
try {
p1 = r.exec("cmd /c start " Path "/open.bat");
}
catch(Exception c) {
}
}
在草圖檔案夾中有一個名為“lib”的檔案夾,其中包含 open.bat 和 Exe2.exe 檔案
uj5u.com熱心網友回復:
根據您的評論,使用如下檔案結構:
C:.
│ ExeLauncherSketch.pde
│
└───lib
exe2.cmd
open.bat
exe2.exeexe2.cmd的占位符在哪里:
@echo "exe2 placeholder script"
timeout 10
您可以執行以下操作:
void setup() {
String path = sketchPath("lib");
try {
exec(path "/open.bat", path);
}catch(Exception ex) {
ex.printStackTrace();
}
exit();
}
這是一種解決方法,您可以將處理草圖中的草圖路徑傳遞給 open.bat,您可以將其讀取/用作第一個命令列引數 ( %1)
這將使open.bat:
@ECHO "path received "
start %1/Exe2.cmd
cls
@ECHO OFF
SET LookForFile="%1/answer.txt"
:CheckForFile
IF EXIST %LookForFile% GOTO FoundIt
GOTO CheckForFile
:FoundIt
echo the number is:
more answer.txt
del "%1/answer.txt"
GOTO CheckForFile
更新Magoo 的答案是我一直在尋找的(但不記得了):一種獲取檔案所在路徑的方法。
這會將草圖簡化為:
void setup() {
try {
exec(sketchPath("lib/open.bat"));
}catch(Exception ex) {
ex.printStackTrace();
}
exit();
}
%1并交換%~dp0:
@ECHO "path received "
start %~dp0Exe2.cmd
cls
@ECHO OFF
SET LookForFile="%~dp0answer.txt"
:CheckForFile
IF EXIST %LookForFile% GOTO FoundIt
GOTO CheckForFile
:FoundIt
echo the number is:
more answer.txt
del "%~dp0/answer.txt"
GOTO CheckForFile
start(記住和之間有區別call(更多資訊在這里))
更新lib檔案夾是一個特殊
的檔案夾。當您匯出應用程式時,處理 .jar 檔案通常存在于其中,這意味著原始草圖中的 .bat/.exe 檔案可能無法進入匯出的 application.windows64 檔案夾。匯出程序完成后,您需要手動將 .bat/.exe 檔案復制到 lib 檔案夾。可能的建議是將lib檔案夾重命名data為草圖(并在草圖中更新 open.bat 的路徑(例如exec(sketchPath("data/open.bat"));(或者甚至可能是exec(dataPath("open.bat"));??):這樣你就可以擁有一個更清晰的結構,其中包含 .bat/.exe 檔案)檔案夾和 .jar 檔案在另一個)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/494646.html
