我的批处理文件在Windows锁定时不会继续

问题描述:

我有一个批处理文件,它调用其他程序打开并运行。我的批处理文件在Windows锁定时不会继续

我想让这个批处理文件在我的计算机被锁定的情况下在一夜之间运行。我使用Windows任务计划程序在一夜之间运行此程序。批处理文件运行良好,除非它到达start Check1.msl。然后窗户似乎无法找到该文件。当我解锁我的电脑并手动执行批处理文件时,找到并运行这些文件没有任何问题。

这里是我的代码:

@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脚本。所以我从Microsoft's developer network在线查阅,并得到了语法WScript //B

EDIT2:

我把pause到代码进行分解,并确保它是做什么是应该做的。不是。

Check1.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无济于事。

+1

设置你的工作目录。使用Task Scheduler启动的批处理有另一个“homedir” – Stephan

+0

我还要检查您的电源选项,并确保硬盘在待机时不会关闭。 –

+0

'IF EXIST'看起来不错吗?不知道我是否得到了正确的答案。随着我所做的研究,我无法弄清楚是否可以。 –

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

+1

有些事情会让我感到困扰,你为什么在批处理/ VB脚本中发送密码?你正在设置自己的安全审计失败!!如果你需要跨越域,您需要在目标机器上安排任务或运行它emotely。我们甚至不能再运行PSEXEC。它被认为是“黑客工具”,即使是由“微软研究员”(以前称为SysInternals)设计和构建的。 – Leptonator

+0

是的,这是真的!感谢您的反馈意见! –

中的.bat脚本可以使当前工作目录是一个在它是由位于:

PUSHD "%~dp0" 

记住退出前POPD。

@ECHO OFF 
PUSHD "%~dp0" 

ECHO CD is now %CD% 
DIR Check1.msl 

START Check1.msl 
... 
+1

或者你可以使用'cd/d“%〜dp0”'和 –

+0

我做了一些编辑 - 我尝试了你的'cd/d'%〜dp0''以及直接cd像'cd/d'C:\ Users \ Username \ Desktop \ NewFolder “。似乎没有任何作用 –