批处理自己更新自己

class procedure TVTUpgrader.UpdateSelf(const FileName: TVTString);
var
  LBatchFile: TextFile;
  LBatchFileName: TVTString;
  LProcessInfo: TProcessInformation;
  LStartUpInfo: TStartupInfo;
begin
  //批处理文件名
  LBatchFileName := ExtractFilePath(ParamStr(0)) + '_deleteme.bat';

  //打开文件,设置覆盖模式
  AssignFile(LBatchFile, LBatchFileName);
  Rewrite(LBatchFile);

  //写入批处理内容
  Writeln(LBatchFile, ':try');
  Writeln(LBatchFile, 'del "' + ParamStr(0) + '"');
  Writeln(LBatchFile, 'if exist "' + ParamStr(0) + '"' + ' goto try');
  Writeln(LBatchFile, 'copy "' + FileName + '" "' + ParamStr(0) + '"');
  Writeln(LBatchFile, 'del "' + FileName + '"');
  Writeln(LBatchFile, 'del %0');

  //关闭文件
  CloseFile(LBatchFile);

  //创建新进程运行批处理文件
  FillChar(LStartUpInfo, SizeOf(LStartUpInfo), $00);
  LStartUpInfo.dwFlags := STARTF_USESHOWWINDOW;
  LStartUpInfo.wShowWindow := SW_HIDE;
  if CreateProcess(nil, PChar(LBatchFileName), nil, nil, False,
    IDLE_PRIORITY_CLASS, nil, nil, LStartUpInfo, LProcessInfo) then
  begin
    CloseHandle(LProcessInfo.hThread);
    CloseHandle(LProcessInfo.hProcess);
  end;
end;

转载于:https://www.cnblogs.com/mikemao/archive/2011/10/11/2207377.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值