我已经在记事本中制作了一个程序,运行该程序时,用户可以选择其中一个选项。每个选项实际上都是倒计时的时间,直到它达到0时,计算机才会自行锁定。
问题:
创建它的目的是为我的弟弟分配一定的时间,但是只需手动关闭程序就可以轻松停止它。
我想知道是否因此能做到这一点,所以在选择一个选项后,该程序将在后台运行以隐藏自身,或者如果它是手动关闭的,它将重新打开并进行递减计数。
提供的示例代码:
@echo off
cls
title Shutdown timer
color 0a
:start
echo
echo Choose Your Time allocated
echo 1. 35 Minutes
echo 2. 65 Minutes
echo 3. 95 Minutes
echo 4. 125 Minutes
echo 5. 1 Minutes
set /p choice=Type which number for your choice
if not '%choice%'== set choice=%choice:~0,1%
if '%choice%'=='1' goto :Choice1
if '%choice%'=='2' goto :Choice2
if '%choice%'=='3' goto :Choice3
if '%choice%'=='4' goto :Choice4
If '%choice%'=='5' goto :Choice5
echo "%choice%" is not a valid option. Please try again
答案 0 :(得分:1)
您是否想对批处理脚本进行欺骗?一个简单的解决方案是简单地隐藏命令窗口。这可以通过使用.VBS
命令外壳来隐藏命令提示符过程来完成。原始帖子here。
CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False
上面是在VBS
中隐藏命令窗口的脚本。您可以通过调用wscript.exe "Script" "Batch File"
使用此脚本。无需第三方工具即可轻松实现此目的。
我结合了您的脚本,以允许创建,导出,使用和删除这些文件。您的主关机脚本还将需要导出到新的批处理文件,以供VBS脚本调用。可以使用下面的代码块完成
Rem | Create Timer.bat
(
Echo TIMEOUT /T %Time% /NOBREAK
Echo rundll32.exe user32.dll,LockWorkStation
Echo DEL "%%~f0"
)>> %Temp%\Timer.bat
这将创建一个包含关闭或锁定命令的新批处理文件。在这种情况下,rundll32.exe user32.dll,LockWorkStation
将在X分钟后TIMEOUT /T
StartTimmer.bat:
@echo off
title Shutdown timer
color 0a
:start
cls
echo Choose Your Time allocated:
echo(
echo 1. 35 Minutes
echo 2. 65 Minutes
echo 3. 95 Minutes
echo 4. 125 Minutes
echo 5. 1 Minutes
echo(
set /p "choice=Type which number for your choice: "
if "%choice%"=="1" set "choice=35" & goto ChoiceSellected
if "%choice%"=="2" set "choice=65" & goto ChoiceSellected
if "%choice%"=="3" set "choice=95" & goto ChoiceSellected
if "%choice%"=="4" set "choice=125" & goto ChoiceSellected
If "%choice%"=="5" set "choice=1" & goto ChoiceSellected
goto start
:ChoiceSellected
Echo Now Starting Timmer For %choice% Minutes
Rem | Do math - Covert Seconds To Minutes
Set /a "Time=%choice% * 60"
Rem | Create Timer.bat
(
Echo TIMEOUT /T %Time% /NOBREAK
Echo rundll32.exe user32.dll,LockWorkStation
Echo DEL "%%~f0"
)>> %Temp%\Timer.bat
Rem | Export Hide Script & Use it
Echo CreateObject^("Wscript.Shell"^).Run """" ^& WScript.Arguments^(0^) ^& """", 0, False>> Hide.vbs
wscript.exe "%~dp0Hide.vbs" "%Temp%\Timer.bat"
del "%~dp0Hide.vbs"
goto :EOF
要获取有关任何命令的帮助,请执行以下操作:
call /?
set /?
for /?
if /?
find /?