打开文件并等待它退出/退出然后继续批处理文件

时间:2011-04-19 01:59:02

标签: windows batch-file

    SETLOCAL enableextensions enabledelayedexpansion
    ::  change your Given/First name
    set MYSELF=Felipe
    set BOSS=Jon
    set "MYFILE=Timesheet_%MYSELF%_FY10.11_Version_1.1.xls"
    set "MYLOCKEDFILE=%MYFILE%.gpg"
    set "SAFETY=~%MYFILE%"

    ::  PFx86: this variable is needed to avoid breaking 'if' statement below
    set "PFx86=%PROGRAMFILES(x86)%"
    if exist (%PFx86%) (
        set "GPGBIN=%PFx86%\GNU\GnuPG\"
        echo 64-bit windows...
    ) else (
        set "GPGBIN=%PROGRAMFILES%\GNU\GnuPG\"
        echo 32-bit windows...
    )

    if exist %MYLOCKEDFILE% (
        echo locked file found
        for %%F in (%MYLOCKEDFILE%) do (
            set ATTRIBS=%%~aF
            set READ_ATTRIB=!ATTRIBS:~1,1!

            if !READ_ATTRIB!==r (
                echo locked file is RO...
                ::  svn lock
                TortoiseProc.exe /command:lock /path:%MYLOCKEDFILE%
            ) else (
                echo locked file is RW...
            )

            ::  decrypt
            echo decrypting...
            "%GPGBIN%\gpg.exe" "%MYLOCKEDFILE%"
        )

        if exist %MYFILE% (
            echo opening %MYFILE%...
            %MYFILE%
            echo encrypting...
            ::  encrypt
            gpg.exe -r %BOSS% -r %MYSELF% -e %MYFILE%
            echo deleting %MYFILE%...
            del %MYFILE%
        )
    )

我有一个批处理文件,可以执行以下操作

  1. 解密timesheet.xls.gpg文件
  2. 打开它

    “timesheet.xls”

  3. 然后再次使用gpg加密

  4. 当时间表打开时,它会立即继续进入“加密”阶段。

    如何让它等到XLS文件关闭以恢复脚本运行(没有明确的用户干预)?

2 个答案:

答案 0 :(得分:2)

我用过

START /WAIT "title" "..\path\to\excel.exe" "%MYFILE%"

它有效。

答案 1 :(得分:0)

您可能最好忘记为此使用批处理文件,而是使用AutoIt,它可以等到Excel完成电子表格的打开,然后从那里继续到加密阶段。

引用他们的网页:

  

AutoIt v3是一种免费的类似BASIC的脚本语言,用于自动化Windows GUI和通用脚本。它使用模拟击键,鼠标移动和窗口/控制操作的组合,以便以其他语言(例如VBScript和SendKeys)不可能或不可靠的方式自动执行任务。 AutoIt也非常小,独立,可以在开箱即用的所有Windows版本上运行,不需要烦人的“运行时”!

这将更适合手头的任务。