代码之家  ›  专栏  ›  技术社区  ›  Johan Brink

执行后批处理脚本未释放

  •  0
  • Johan Brink  · 技术社区  · 6 年前

    我有一个批处理脚本,它在发生备份事件后执行文件版本控制。此批处理脚本将写入普通的txt日志文件,并调用PowerShell脚本将此日志文件作为带有成功通知电子邮件的附件发送。我已经成功地释放了日志文件上的写锁,允许PS附加和发送文件,但是在整个序列完成后,批处理脚本不会停止。

    1. Press any key to continue... 带着等待的壳
    2. 应用程序锁定的日志文件,除非释放该日志文件,否则将不允许脚本再次运行。

    这是事件的顺序: Script Sequence 我唯一的停顿是在<bak_send_exec.bat>-它的唯一目的是启动PS脚本:

    PowerShell.exe -noprofile -executionpolicy bypass
    

    这将在周末凌晨1:00运行,因此不需要用户干预。


    这个相互连接的批处理文件用时间戳重命名两个相同的文件(在不同的位置)。时间戳将写入一个变量,以便在使用PowerShell命令发送的通知电子邮件中使用。整个过程将记录到一个txt日志文件中(脚本再次运行时文件将被覆盖),日志文件将包含在前面提到的通知电子邮件中。

    脚本调用:


    初始启动命令: 触发版本控制过程并记录进程 versioncontrol_post.bat > TSLog.txt 2>&1

    版本控制.bat: 执行主过程,然后以 CALL bak_send_exec.bat

    怀疑的原因。。。整个文件的编码有三行,但如前所述,为了放松政策,必须这样做:

    @ECHO OFF
    PowerShell.exe -noprofile -executionpolicy bypass -file bak_send.ps1
    PAUSE
    

    执行主要过程,将临时日志(TSLog.txt)的副本复制到其最终主页,释放TSLog文件以处理其新副本,然后继续获取新副本并将其附加到电子邮件并发送电子邮件。程序的最后一行是 EXIT


    错误查找告诉我问题不在PowerShell脚本,而在调用它的脚本中。取出PAUSE命令将导致PowerShell无法启动。

    有人能解决这个问题吗 “功能” ?

    0 回复  |  直到 6 年前