Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 批处理文件脚本问题_Windows_Batch File_Service_Command Line Arguments - Fatal编程技术网

Windows 批处理文件脚本问题

Windows 批处理文件脚本问题,windows,batch-file,service,command-line-arguments,Windows,Batch File,Service,Command Line Arguments,在我的工作中,我们使用批处理文件在晚上重新启动服务。但也有一些问题。1是指当批处理运行时,在命令提示符中会显示一条错误消息:error:the process nameofservice.exe not found。几次,然后它关闭并结束。这不是一个太大的问题,但我注意到,在某些情况下,错误消息将持续显示,并且永远不会关闭 我遇到的另一个问题,据我所知,这也是最近才开始发生的,就是批处理脚本一直在运行。它应该完成并重新启动所有列出的服务一次,然后停止。但在重新启动它们之后,它会再次启动。我不得不

在我的工作中,我们使用批处理文件在晚上重新启动服务。但也有一些问题。1是指当批处理运行时,在命令提示符中会显示一条错误消息:error:the process nameofservice.exe not found。几次,然后它关闭并结束。这不是一个太大的问题,但我注意到,在某些情况下,错误消息将持续显示,并且永远不会关闭

我遇到的另一个问题,据我所知,这也是最近才开始发生的,就是批处理脚本一直在运行。它应该完成并重新启动所有列出的服务一次,然后停止。但在重新启动它们之后,它会再次启动。我不得不将它设置为6小时后终止,脚本在任务调度程序中几乎不需要20分钟

以下是脚本:

@ECHO OFF
SETLOCAL EnableDelayedExpansion
ECHO ---------------------------------------------->> liblog.txt
ECHO -----------========================----------->> liblog.txt
ECHO -----------=========%date%=========----------->> liblog.txt
ECHO -----------========================----------->> liblog.txt
ECHO ---------------------------------------------->> liblog.txt

set DD=0
Set TIMESTAMP="eol=; tokens=1,2,3,4* delims=/, "
For /F %TIMESTAMP% %%i in ('DATE /t') DO (
    SET YYYYMMDD=%%l%%j%%k
    SET YYYYMM=%%l%%j
    set DD=%%k
)

echo C2 >> libservers
echo G >> libservers
echo H >> libservers
echo I >> libservers
echo J >> libservers
echo K >> libservers
echo L >> libservers
echo M >> libservers
echo N >> libservers
echo O >> libservers
echo P >> libservers
echo Q >> libservers
echo R >> libservers
echo S >> libservers
echo T >> libservers
echo U >> libservers
echo V >> libservers
echo W >> libservers
echo X >> libservers
echo Y >> libservers
echo Z >> libservers

for /f %%a in (libservers) do (
    set timestamp=!date!!time!
    ECHO !timestamp! - Stopping Libserver %%a >> liblog.txt
    net stop /y NuCPLibServerFB_%%a >> liblog.txt
    taskkill /f /im NuCPLibServerFB_%%a.exe >> liblog.txt

    ping localhost -n 30 > nul

    if %DD%==01 (
        ren D:\Libserver\Logs\LibServer_Server%%a.GDB LibServer_Server%%a_%yyyymm%.GDB >> liblog.txt
        copy D:\Libserver\Logs\LibServer_Server.GDB     D:\Libserver\Logs\LibServer_Server%%a.GDB
    )
    set timestamp=!date!!time!
    ECHO !timestamp! - Starting Libserver %%a >> liblog.txt
    net start NuCPLibServerFB_%%a >> liblog.txt
)

for /f %%a in (libservers) do (
    set timestamp=!date!!time!
    ECHO !timestamp! - Stopping Libserver %%a >> liblog.txt
    net stop /y NuCPLibServerFB_%%a >> liblog.txt
    taskkill /f /im NuCPLibServerFB_%%a.exe >> liblog.txt

    ping localhost -n 30 > nul

    set timestamp=!date!!time!
    ECHO !timestamp! - Starting Libserver %%a >> liblog.txt
    net start NuCPLibServerFB_%%a >> liblog.txt
)
if exist libservers del libserversrs
不幸的是,我不是写它的人,所以我不完全理解它是如何工作的,我仍然在学习这些东西


感谢您的帮助。我不是在寻找一个神奇的解决方案,只是一些帮助,找出它不起作用的原因,以及任何可以改进它的建议。

我看到的第一件事是它向服务发送停止消息,终止服务使用的进程,等待30秒,然后启动服务。这不是很好的做法,因为在停止服务和终止进程之间没有时间。SC命令对于这种类型的东西更健壮。WMIC也是。欢迎来到StackOverflow。不幸的是,这不是一个真正的网站,这里有大量的代码。帮我修一下?输入问题。如果可以的话,我们很乐意帮助您回答特定的问题,但是我们不能期望您知道您在问什么,调试您的代码以找出问题所在,并为您修复它。如果你能把它缩小到一个合理的范围,准确地解释它是如何不起作用的,并提出一个具体的问题,我们可以试着提供帮助。没问题,肯,我并不期待有一个神奇的解决方案,只是一些关于它为什么不能按预期运行的建议。马特,谢谢你的指挥建议。我试着用sc start和sc stop替换net start/stop和taskkill命令,到目前为止,在测试中,它工作得很好。