发出命令后如何隐藏批处理文件

时间:2019-01-21 17:11:34

标签: batch-file cmd hide restart notepad

我已经在记事本中制作了一个程序,运行该程序时,用户可以选择其中一个选项。每个选项实际上都是倒计时的时间,直到它达到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

1 个答案:

答案 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 /?
  • 等等。