0 windows delphi cmd batch-file delphi-7
我搜索了很多,但我找不到正确的答案.
目录:
Project(此文件夹包含delphi代码和名为"RunThis"的文件夹
RunThis
Run.bat代码
start %cd%\RandomApp.exe
pause
Run Code Online (Sandbox Code Playgroud)
Delphi 7(单击按钮执行此代码.)
ShellExecute (application.handle, 'open', 'cmd', PChar('cmd.exe /c RunThis\Run.bat'), nil, SW_MAXIMIZE
Run Code Online (Sandbox Code Playgroud)
如果我没有为目录添加'cmd.exe/c'部分,Delphi将打开一个没有任何代码的cmd.类似于是否必须运行cmd.exe.但是,如果我添加'cmd.exe/c',则它会正确打开Run.bat.
Windows给我这个错误:Windows无法找到'C:\ Project\RunThis\RandomApp.exe'.请确保您正确键入名称,然后再试一次.
有趣的是,如果我只是双击Run.bat,它就会完美无缺.但是,当我通过Delphi打开它时,它给了我这个错误.我想也许Run.bat当前地址有问题.所以不要说:
start RandomApp.exe
Run Code Online (Sandbox Code Playgroud)
我使用了完整的当前目录:
start %cd%\RandomApp.exe
Run Code Online (Sandbox Code Playgroud)
只是补充一下,当我让Delphi 7直接打开程序时,例如:
ShellExecute(Handle, 'open', PChar('RunThis\RandomApp.exe'),null, null, SW_SHOWNORMAL) ;
Run Code Online (Sandbox Code Playgroud)
该程序给了我一个错误,它无法找到"Config.txt".RandomApp.exe使用存储其所有设置的文本文件.
同样,如果我只是单击Run.bat或RandomApp.exe,它们都会完美执行.问题是当我尝试用代码打开它时.我觉得它与目录有关,但我不太清楚.
非常感谢你.
PS:运行Windows 10.
不要依赖相对路径,总是使用绝对路径.
RandomApp.exe可能使用相对路径来查找Config.txt,但是当您从应用程序运行它时,当前工作目录是您的项目文件夹,而不是RunThis文件夹.这就是RandomApp.exe找不到文件的原因.所以传递正确的文件夹ShellExecute(),例如:
var
Folder: string;
begin
Folder := ExtractFilePath(Application.ExeName)+'RunThis\' ;
ShellExecute(Application.Handle, nil, PChar(Folder+'Run.bat'), nil, PChar(Folder), SW_MAXIMIZE);
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
329 次 |
| 最近记录: |