【问题标题】:Batch script - calling commands mid-script批处理脚本 - 在脚本中调用命令
【发布时间】:2015-10-11 06:00:30
【问题描述】:

我需要你们的一些想法。主要是关于如何解决这个问题。我正在尝试为我们的帮助台自动化大多数现代版本的 Windows 附带的工具。它的问题步骤记录器或 PSE.exe。显然,使用该工具对于某些用户来说“太难”了,我认为这将是练习脚本编写和学习一些东西的好例子。

我实际上有一些效果很好的东西,但是我有一个问题让我很恼火,我想不出解决方案,或者它这样做的原因。

@ECHO OFF
TITLE PSR Script - DO NOT CLOSE, IT WILL AUTOMATICALLY CLOSE ON ITS OWN.
CD %TEMP%
MKDIR PSR
CD PSR
SET psrdir=%TEMP%\PSR
psr.exe /start /output "%psrdir%\ScreenCapture.zip" /maxsc 50 /gui 1 /stopevent 8675309
If exist "outlook.exe" "GOTO Outlook" else "GOTO Explorer"
:Outlook
start "" "OUTLOOK.EXE" /c ipm.note /m "support@msp.net&subject=Screen Capture&body=Please see attached file." /a "%psrdir%\ScreenCapture.zip" & GOTO exit
:Explorer
explorer.exe /n /root,%psrdir% & GOTO exit
:exit
exit

我的问题是,一旦我开始启动 PSR 可执行文件,脚本将一直挂起,直到它关闭。理想情况下,我希望提示“按任意键继续...”或弹出窗口或其他内容。然后我可以添加一个 PSR.exe /stop,并通过脚本关闭程序。以目前的编写方式,我必须告诉我的用户不仅要停止,还要关闭它。我知道这没什么大不了的,但我确实想知道如何解决它。

【问题讨论】:

    标签: shell batch-file scripting problem-steps-recorder


    【解决方案1】:

    不管psr.exe的状态如何变化,让程序继续运行

    psr.exe /start /output "%psrdir%\ScreenCapture.zip" /maxsc 50 /gui 1 /stopevent 8675309
    

    start psr.exe /output "%psrdir%\ScreenCapture.zip" /maxsc 50 /gui 1 /stopevent 8675309
    


    要使用 VBS 创建弹出窗口:

    批处理:在您希望弹出窗口时使用start popup.vbs,或在执行任何其他操作之前使用start popup.vbs /wait 等待弹出窗口关闭。

    VBS (popup.vbs):

    Popup=msgbox("YourMessage",0,"YourTitle")
    

    上面vbscript中的0表示只会有一个ok按钮。如需更多选项,并阅读有关 vbs 消息框的更多信息click here

    您可以,添加以下行来创建 vb 文件,运行它,然后删除它:

    echo Popup=msgbox("Click to close",0,"YourTitle")>popup.vbs
    start popup.vbs
    pause
    del popup.vbs
    

    【讨论】:

    • 问题是,当 PSR 实用程序打开时,脚本会停止。如果我理解正确,这意味着不会处理任何新命令。 VBS 为我节省了一点关于如何创建弹出消息的知识,但主要问题是当 .EXE 打开时,脚本会停止。我需要一种方法来运行可执行文件,然后让它继续运行,而不管它调用的正在运行的程序的状态如何。
    • @Moridn 我编辑了我的答案,希望能回答你的问题,让我知道结果如何。
    • 效果很好。我不得不通过批处理调用 VBS 脚本,这不太理想,但它工作得很好。我希望避免使用多个文件,因为我必须将其压缩,并且 Outlook 不会像 .ZIP 附件一样。知道有什么方法可以直接在批处理文件中调用那个 VBS,还是从 VBS 开始调用原始文件?
    • @Moridn 很高兴听到它成功了,欢迎来到 stackoverflow :)
    • @Moridn 好吧,您可以使用批处理创建一个临时 VBS,运行它,然后在弹出窗口完成后将其删除。如果您想知道如何执行此操作,请告诉我,我将编辑我的答案。
    猜你喜欢
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 2012-11-17
    相关资源
    最近更新 更多