标题: [文本处理] 批处理自动重启的问题。 [打印本页]
作者: 帝尊 时间: 2021-11-24 22:41 标题: 批处理自动重启的问题。
如果自启动文件夹有对应的BAT文件就跳过,没有就复制自身到启动文件夹,就是可以让BAT开机自动运行。
如果没有Time.txt文件就建立文件并且提示输入文件内容或者选择内容,分别是5或者10。
如果文件夹下有Time.txt文件就检测Time.txt文件内的数字是否为0,如果是,结束并且删除Time.txt和BAT自身。
如果不是就对文件内的数字进行减一并且在10秒后重启。10秒最好有个倒计时,可以随时按空格暂停。按空格暂停以后提示是否要删除Time.txt和BAT自身。
我想不出来不建立TXT文件来控制次数的方式。
感觉有点复杂,感谢各位大佬帮忙写一下。
作者: 帝尊 时间: 2021-11-24 22:53
本帖最后由 帝尊 于 2021-11-24 23:19 编辑
@echo off
Setlocal enabledelayedexpansion
set time=%time%
if not exist RE.bat
copy %0 C:\Documents" "and" "Settings\All" "Users\「开始」菜单\程序\启动\RE.bat
if not exist Time.txt
type 5>Time.txt
if 检测文件内的数字是0(
del RE.bat
del Time.txt
)else(
这里读取TXT的内容赋值给%time%
%time%-=%time%>Time.txt
shutdown -r -t 10
)
第二个
@echo off
Setlocal enabledelayedexpansion
SET TXTFile=%cd%\Time.txt
SET BATFile=%cd%\Run.bat
SET Time=%Time%
if %Time%=0(
if exist %BATFile% (
if not exist %TXTFile% (
del Time.txt
del Run.bat
)else(
type 5>%TXTFile%
) else (
%Time%-=%Time%>%TXTFile%
shutdown -r -t 10
)
) else (
copy %0 C:\Documents" "and" "Settings\All" "Users\「开始」菜单\程序\启动\Run.bat
)
读取文件这里一直写不好。
作者: 帝尊 时间: 2021-11-24 23:28
我有想过用set/p file=<Time.txt来进行10个嵌套,但是写着写着就懵了。
作者: 帝尊 时间: 2021-11-24 23:53
本帖最后由 帝尊 于 2021-11-25 00:02 编辑
洗澡的时候在想,嵌套有点蠢了。
if set/p file=<Time.txt=0(
del Time.txt
del Run.bat
) else (
% file% -= 1 > Time.txt
shutdown -r -t 100
)
这样可行?
作者: Batcher 时间: 2021-11-25 16:45
回复 4# 帝尊
思路可行,具体代码遇到问题的时候再继续讨论。
作者: 帝尊 时间: 2021-11-27 22:22
- @echo off
- setlocal enabledelayedexpansion
- SET TimeFile=%~dp0Time.txt
- SET Num=10
- if not exist %TimeFile% (
- type nul>%TimeFile%
- echo 文件不存在,已创建该文件!
- echo %Num% > %TimeFile%
- echo 写入资料
- ) else (
- if %TimeFile%==0 (
- del %TimeFile%
- del Test.bat
- ) else (
- set /p n=<%TimeFile%
- set /a n-=1
- >%TimeFile% echo %n%
- shutdown -r -t 120
- )
- )
- PAUSE
复制代码
为什么运行第二次以后,TXT文件内容显示ECHO 关闭?
作者: 帝尊 时间: 2021-11-27 22:25
本帖最后由 帝尊 于 2021-11-27 22:27 编辑
是因为if %TimeFile%==0这一段?
改编成if %TimeFile%=0这样?
也不对,把这个IF删掉也这样。
作者: 帝尊 时间: 2021-12-1 21:36
- @echo OFF
- setlocal enabledelayedexpansion
- SET TimeFile=%~dp0Time.txt
- SET Num=10
- if not exist %TimeFile% (
- type nul>%TimeFile%
- echo %Num%>%TimeFile%
- ) ^
- else if %TimeFile% == 0 (
- del Time.txt
- del Test.bat
- ) ^
- else (
- set /p n=<%TimeFile%
- set /a n-=1
- echo %n%>%TimeFile%
- shutdown -s -t 10
- )
- PAUSE
复制代码
麻烦大佬帮忙完善一下。
作者: Batcher 时间: 2021-12-1 23:08
回复 8# 帝尊 - @echo off
- setlocal enabledelayedexpansion
- set "TimeFile=%~dp0Time.txt"
- set "Num=10"
- if not exist "%TimeFile%" (
- >"%TimeFile%" echo %Num%
- ) else (
- set /p n=<"%TimeFile%"
- )
- if !n! == 0 (
- del /f /q "%TimeFile%"
- del /f /q "%0"
- ) else (
- set /a n-=1
- >"%TimeFile%" echo !n!
- shutdown -s -t 10
- )
复制代码
作者: 帝尊 时间: 2021-12-2 08:36
回复 9# Batcher
谢谢,我再学学。大受启发。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |