如何让批处理脚本在打开文件后不关闭
How to get batch script to not close after opening a file
我是我公司的 Build Master,负责 运行 部署我们的代码。此过程的一部分涉及监视服务器日志以确保一切成功并重新上线。我写了一个批处理脚本来自动打开日志,这样我就不必手动操作了。我写了一个脚本,我可以在其中输入我想查看的服务器,它会从该服务器打开所有正确的日志。我的问题是,我希望脚本在打开日志后重新开始,因为很多时候我需要一次部署到多个服务器,我宁愿不必重新 运行脚本,但由于某种原因,它总是在打开日志后关闭。我将在下面提供一些我正在使用的代码。
@echo off
:Begin
echo.
echo Select Environment (HELP to List Options)
set /p Environment=""
if "%Environment%" == "HELP" (
GOTO LIST_ENV
) else if "%Environment%" == "Stop" (
GOTO:EOF
) else if "%Environment%" == "Dev02" (
%Environment% = dgisweb02
GOTO NON_BATCH
此部分提示我输入服务器名称或帮助,以获取服务器列表。然后它通过 if/if else 语句为我想要的环境设置正确的服务器名称。我有更多的环境,但没有必要为了这个问题的目的把它们都列出来。
:NON_BATCH
%SystemRoot%\explorer.exe "\%Environment%\gwlogs\ContactManager\logs\ablog.log"
%SystemRoot%\explorer.exe "\%Environment%\gwlogs\BillingCenter\logs\bclog.log"
%SystemRoot%\explorer.exe "\%Environment%\gwlogs\ClaimCenter\logs\cclog.log"
%SystemRoot%\explorer.exe "\%Environment%\gwlogs\PolicyCenter\logs\pclog.log"
GOTO Begin
这是我输入“Dev02”后跳转到的 NON_BATCH 部分。问题是它永远不会到达 GOTO Begin,它应该将它发送回脚本顶部的 :Begin 标签,对吗?任何建议都会有所帮助,我在制作批处理脚本方面没有太多经验,只是为了让我的生活更轻松一些。
EDIT 所以它似乎从未真正进入这个 NON_BATCH 部分。相反,它打开了一个单独的批处理文件,我刚才创建了一个批处理文件来打开这些日志,名为 Dev02.bat。我不太确定它为什么调用该文件。
我不知道这是否有帮助,因为它似乎永远不会到达最后一行,但重新启动脚本的一种简单方法是让它再次调用自身并在调用后退出。这是一种解决方法,可以查看批处理文件是否到达代码末尾。
:NON_BATCH
%SystemRoot%\explorer.exe "\%Environment%\gwlogs\ContactManager\logs\ablog.log"
%SystemRoot%\explorer.exe "\%Environment%\gwlogs\BillingCenter\logs\bclog.log"
%SystemRoot%\explorer.exe "\%Environment%\gwlogs\ClaimCenter\logs\cclog.log"
%SystemRoot%\explorer.exe "\%Environment%\gwlogs\PolicyCenter\logs\pclog.log"
./thisscript.bat
exit
我是我公司的 Build Master,负责 运行 部署我们的代码。此过程的一部分涉及监视服务器日志以确保一切成功并重新上线。我写了一个批处理脚本来自动打开日志,这样我就不必手动操作了。我写了一个脚本,我可以在其中输入我想查看的服务器,它会从该服务器打开所有正确的日志。我的问题是,我希望脚本在打开日志后重新开始,因为很多时候我需要一次部署到多个服务器,我宁愿不必重新 运行脚本,但由于某种原因,它总是在打开日志后关闭。我将在下面提供一些我正在使用的代码。
@echo off
:Begin
echo.
echo Select Environment (HELP to List Options)
set /p Environment=""
if "%Environment%" == "HELP" (
GOTO LIST_ENV
) else if "%Environment%" == "Stop" (
GOTO:EOF
) else if "%Environment%" == "Dev02" (
%Environment% = dgisweb02
GOTO NON_BATCH
此部分提示我输入服务器名称或帮助,以获取服务器列表。然后它通过 if/if else 语句为我想要的环境设置正确的服务器名称。我有更多的环境,但没有必要为了这个问题的目的把它们都列出来。
:NON_BATCH
%SystemRoot%\explorer.exe "\%Environment%\gwlogs\ContactManager\logs\ablog.log"
%SystemRoot%\explorer.exe "\%Environment%\gwlogs\BillingCenter\logs\bclog.log"
%SystemRoot%\explorer.exe "\%Environment%\gwlogs\ClaimCenter\logs\cclog.log"
%SystemRoot%\explorer.exe "\%Environment%\gwlogs\PolicyCenter\logs\pclog.log"
GOTO Begin
这是我输入“Dev02”后跳转到的 NON_BATCH 部分。问题是它永远不会到达 GOTO Begin,它应该将它发送回脚本顶部的 :Begin 标签,对吗?任何建议都会有所帮助,我在制作批处理脚本方面没有太多经验,只是为了让我的生活更轻松一些。
EDIT 所以它似乎从未真正进入这个 NON_BATCH 部分。相反,它打开了一个单独的批处理文件,我刚才创建了一个批处理文件来打开这些日志,名为 Dev02.bat。我不太确定它为什么调用该文件。
我不知道这是否有帮助,因为它似乎永远不会到达最后一行,但重新启动脚本的一种简单方法是让它再次调用自身并在调用后退出。这是一种解决方法,可以查看批处理文件是否到达代码末尾。
:NON_BATCH
%SystemRoot%\explorer.exe "\%Environment%\gwlogs\ContactManager\logs\ablog.log"
%SystemRoot%\explorer.exe "\%Environment%\gwlogs\BillingCenter\logs\bclog.log"
%SystemRoot%\explorer.exe "\%Environment%\gwlogs\ClaimCenter\logs\cclog.log"
%SystemRoot%\explorer.exe "\%Environment%\gwlogs\PolicyCenter\logs\pclog.log"
./thisscript.bat
exit