Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Delphi 7中启动*.batch文件_Delphi_Batch File_Delphi 7 - Fatal编程技术网

如何在Delphi 7中启动*.batch文件

如何在Delphi 7中启动*.batch文件,delphi,batch-file,delphi-7,Delphi,Batch File,Delphi 7,当我运行L.bat时,它会成功启动任何应用程序 L.batcode: @ECHO OFF start notepad.exe exit 当我使用在Delphi7中设计和编译的应用程序时,L.bat没有运行 我的应用程序中的代码: procedure TFMain.ImgBtn1Click( Sender: TObject ); begin Dir := GetCurrentDir ; RunApp( Dir + 'L.bat' ); FMain.Close; end; 您需要使用

当我运行
L.bat
时,它会成功启动任何应用程序

L.bat
code:

@ECHO OFF
start notepad.exe
exit
当我使用在Delphi7中设计和编译的应用程序时,
L.bat
没有运行

我的应用程序中的代码:

procedure TFMain.ImgBtn1Click( Sender: TObject );
begin
  Dir := GetCurrentDir ;
  RunApp( Dir + 'L.bat' );
  FMain.Close;
end;

您需要使用
cmd.exe/c
运行批处理文件。所以
RunApp('cmd.exe/c'+Dir+'\L.bat')应该起作用。

RunApp的功能是什么?它不是Delphi RTL函数。如果我们看不到它如何尝试启动批处理文件,则很难告诉您为什么它不工作。您的
RunApp
函数不使用Windows Shell打开文件。但是你不应该麻烦处理批处理文件,直接从你的应用程序执行notepad.exe。你想使用GetCurrentDir吗?1.)是此位置的批处理文件2。您必须使用Dir:=IncludeTrailingBackSlash(GetCurrentDir);我找到了解决方案:我使用了:
ShellExecute(TForm(Owner).Handle,nil,PChar('L.bat'),nil,nil,SW_SHOWNORMAL)ShellExecute
都有一个用于指定执行参数的参数,例如,使用此
ShellExecute(Handle,nil,'cabalmain.exe,'zds_30',nil,SW_SHOW)您将摆脱该批处理文件。但也有其他方法可以使用参数执行应用程序