Batch file windows被锁定时,我的批处理文件无法继续

Batch file windows被锁定时,我的批处理文件无法继续,batch-file,vbscript,lockscreen,Batch File,Vbscript,Lockscreen,我有一个批处理文件,它调用其他程序打开并运行 我希望此批处理文件在计算机被锁定时通宵运行。我使用Windows任务计划程序在夜间运行此程序。批处理文件运行正常,除非它到达开始检查1.msl。那么windows似乎找不到该文件。当我解锁计算机并手动执行批处理文件时,查找和运行这些文件没有问题 这是我的密码: @echo off Start Check1.msl PING 1.1.1.1 -w 1000 -n 1 start passwordinjector.vbs IF EXIST C:\Us

我有一个批处理文件,它调用其他程序打开并运行

我希望此批处理文件在计算机被锁定时通宵运行。我使用Windows任务计划程序在夜间运行此程序。批处理文件运行正常,除非它到达
开始检查1.msl
。那么windows似乎找不到该文件。当我解锁计算机并手动执行批处理文件时,查找和运行这些文件没有问题

这是我的密码:

@echo off
Start Check1.msl

PING 1.1.1.1 -w 1000 -n 1
start passwordinjector.vbs

IF EXIST C:\Users\Username\Desktop\New folder\check.rpt (

    taskkill /IM MAINRDW.exe >nul

    PING 1.1.1.1 -w 500 -n 1
    Start Trial.msl

    PING 1.1.1.1 -w 1000 -n 1
    start passwordinjector.vbs

    Del C:\Users\Username\Desktop\New folder\check.rpt

) ELSE (
    PING 1.1.1.1 -w 500 -n 1
    taskkill /IM MAINRDW.exe >nul
)
编辑:

我已经试了一段时间了。为了测试它,我只需使用Windows任务调度程序运行一分钟,然后锁定计算机,等待调度程序启动

以下是我到目前为止的情况:

@echo off
cd /d "%~dp0"

PING 1.1.1.1 -w 2000 -n 1
echo starting the check1 msl file
Start Check1.msl

PING 1.1.1.1 -w 2000 -n 1
echo starting the password injector file
WScript //B passwordinjector.vbs

IF EXIST C:\Users\USERNAME\Desktop\New folder\check.rpt (
echo check if the check exists
taskkill /IM MAINRDW.exe /f >nul 2>&1


PING 1.1.1.1 -w 2000 -n 1
echo It does exist, so run the next Trial msl
Start Trial.msl

PING 1.1.1.1 -w 3000 -n 1
WScript //B passwordinjector.vbs

Del C:\Users\USERNAME\Desktop\New folder\check.rpt


) ELSE (
PING 1.1.1.1 -w 1000 -n 1
it doesnt exits
taskkill /IM MAINRDW.exe /f >nul 2>&1

)
exit    
对批处理文件进行故障排除非常困难。如果有人有任何建议,我将不胜感激。通过反复试验,我发现(仍然不确定)它没有执行.vbs脚本。所以我在网上查了一下,得到了语法
WScript//B

EDIT2:

我在代码中放置了一个
暂停
,以将其分解,并确保它正在做它应该做的事情。不是

check 1.msl
将弹出一个名为
check.rpt
的文件。当我手动运行它并且批处理文件暂停时-
check.rpt
在那里。我安排任务并锁定我的计算机。当我重新登录时,msl程序打开,cmd提示符处于暂停状态,但没有
check.rpt
文件

以下是我一开始的情况:

@ECHO OFF
PUSHD "%~dp0

ECHO CD is now %CD%

PING 1.1.1.1 -w 2000 -n 1
echo starting the check1 msl file
DIR Check1.msl
Start Check1.msl

PING 1.1.1.1 -w 2000 -n 1
echo starting the password injector file
WScript //B passwordinjector.vbs

pause

我尝试了
cscript passwordinjector.vbs
,但无效。

通过以下方法,.bat脚本可以使当前工作目录成为其所在的目录:

PUSHD "%~dp0"
在退出之前,请记住使用POPD

@ECHO OFF
PUSHD "%~dp0"

ECHO CD is now %CD%
DIR Check1.msl

START Check1.msl
...

问题似乎在于VBScript。我使用
.sendkey
来注入密码。这是在计算机被锁定时重新执行的;所以我运气不好。

设置您的工作目录。使用任务计划程序启动的批处理有另一个“homedir”,我还将检查您的电源选项,并确保在待机状态下未关闭硬盘。
如果存在
是否正确?我不确定我是否做对了。根据我所做的研究,我无法确定这是否正确。要解决批处理文件的问题:
echo ON
。并使用
TIMEOUT
而不是ping公共IP…
如果存在“C:\Users\USERNAME\Desktop\New folder\check.rpt”
注意文件规范周围的双引号,因为它包含空格字符……或者您可以只使用
cd/d“%~dp0”
不用担心
popd
只是另一种选择。我做了一些编辑-我试了你的
cd/d“%~dp0”
以及像“cd/d”这样的直接cd:C:\Users\Username\Desktop\NewFolder。这两个似乎都不管用。这件事让我很烦。为什么要在批处理/VB脚本中发送密码?您正在设置自己的安全审核失败!!如果需要跨域运行任务,则需要在目标计算机上计划任务或远程运行任务。我们甚至不能再运行PSEXEC了。它被认为是一个“黑客工具”,尽管它是由一个“微软伙伴”设计和制造的——以前是SysInternals。是的,这是真的!谢谢你的反馈!