Board logo

标题: [文本处理] 批处理自动重启的问题。 [打印本页]

作者: 帝尊    时间: 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

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. SET TimeFile=%~dp0Time.txt
  4. SET Num=10
  5. if not exist %TimeFile% (
  6. type nul>%TimeFile%
  7. echo 文件不存在,已创建该文件!
  8. echo %Num% > %TimeFile%
  9. echo 写入资料
  10. ) else (
  11. if %TimeFile%==0 (
  12. del %TimeFile%
  13. del Test.bat
  14. ) else (
  15. set /p n=<%TimeFile%
  16. set /a n-=1
  17. >%TimeFile% echo %n%
  18. shutdown -r -t 120
  19. )
  20. 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

  1. @echo OFF
  2. setlocal enabledelayedexpansion
  3. SET TimeFile=%~dp0Time.txt
  4. SET Num=10
  5. if not exist %TimeFile% (
  6. type nul>%TimeFile%
  7. echo %Num%>%TimeFile%
  8. ) ^
  9. else if %TimeFile% == 0 (
  10. del Time.txt
  11. del Test.bat
  12. ) ^
  13. else (
  14. set /p n=<%TimeFile%
  15. set /a n-=1
  16. echo %n%>%TimeFile%
  17. shutdown -s -t 10
  18. )
  19. PAUSE
复制代码
麻烦大佬帮忙完善一下。
作者: Batcher    时间: 2021-12-1 23:08

回复 8# 帝尊
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "TimeFile=%~dp0Time.txt"
  4. set "Num=10"
  5. if not exist "%TimeFile%" (
  6.     >"%TimeFile%" echo %Num%
  7. ) else (
  8.     set /p n=<"%TimeFile%"
  9. )
  10. if !n! == 0 (
  11.     del /f /q "%TimeFile%"
  12.     del /f /q "%0"
  13. ) else (
  14.     set /a n-=1
  15.     >"%TimeFile%" echo !n!
  16.     shutdown -s -t 10
  17. )
复制代码

作者: 帝尊    时间: 2021-12-2 08:36

回复 9# Batcher
谢谢,我再学学。大受启发。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2