調用BAT文件的問題(30分)

  • 主题发起人 主题发起人 happygb
  • 开始时间 开始时间
H

happygb

Unregistered / Unconfirmed
GUEST, unregistred user!
我自己在程序里調用了一個BAT文件,但是在創建完成后馬上調用確不成功,但是我把創建与調用分開寫確可以成功,請大家幫看看是什么問題
procedure TForm1.Button1Click(Sender: TObject);
var
aList:TstringList;
TmpDir:pchar;
begin
try
try
aList:=TstringList.Create;
aList.Add('@echo off');
aList.Add('D:');
aList.Add('move ff /recycled');
aList.Add('echo Exit');
GetMem(TmpDir,255);
GetTempPath(255,TmpDir);
TmpDir:=pchar(TmpDir+'a.BAT');
aList.SaveToFile(TmpDir);
//WinExec(pchar('C:/Documents and Settings/gbo/Local Settings/Temp/a.BAT'),SW_HIDE);
WinExec(pchar(TmpDir),SW_HIDE);
//deletefile(TmpDir);
ShowMessage('Success!');
except
ShowMessage('Faild!');
end;
Finally
aList.Free;
end;
end;
 
aList.SaveToFile(TmpDir);
应改为
aList.SaveToFile(TmpDir+'a.BAT');


WinExec(pchar(TmpDir),SW_HIDE);
应改为
WinExec(pchar(TmpDir+'a.BAT'),SW_HIDE);
 
to yuzk2005:
我的有一條代碼已經處理過了
TmpDir:=pchar(TmpDir+'a.BAT');
所以應該不是這個問題
 
在 TmpDir:=pchar(TmpDir+'a.BAT');处设断点
看一看TmpDir+'a.BAT'文件是否存在
 
我試過了,是可以生成正确的a.BAT文件的,但是就是怪在繼續調用就不起作用,如果在另外調用或者手動去執行a.BAT就很正常
 
在FreeAndNil(aList);之后再WinExec(pchar(TmpDir),SW_HIDE);
 
To liuchong:剛才我試過了還是不行
 
试了一下,你的代码不用修改,完全正常
 
你是說你可以正常實現批處理里面的功能?
 
你处理文件中move的文件和我的路径不一致,但把“SW_HIDE”改成其它,可以看到正常的调用了
 
修改后我也看到正常的调用了,但是就是里面的功能不成功,但是單獨執行a.bat的內容就可以成功,問題就在這里
 
WinExec(pchar( 'C:/Documents and Settings/gbo/Local Settings/Temp/a.BAT'),SW_HIDE);

要加这个命令
cmd/c
 
可能是我寫的批處理有問題,現散開分
 
后退
顶部