找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 18837|回复: 9

[文本处理] 批处理自动重启的问题。

[复制链接]
发表于 2021-11-24 22:41:44 | 显示全部楼层 |阅读模式
如果自启动文件夹有对应的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:23 | 显示全部楼层
本帖最后由 帝尊 于 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:12 | 显示全部楼层
我有想过用set/p file=<Time.txt来进行10个嵌套,但是写着写着就懵了。
 楼主| 发表于 2021-11-24 23:53:52 | 显示全部楼层
本帖最后由 帝尊 于 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
)

这样可行?
发表于 2021-11-25 16:45:38 | 显示全部楼层
回复 4# 帝尊


    思路可行,具体代码遇到问题的时候再继续讨论。
 楼主| 发表于 2021-11-27 22:22:31 | 显示全部楼层
  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. )
  21. PAUSE
复制代码
为什么运行第二次以后,TXT文件内容显示ECHO 关闭?
 楼主| 发表于 2021-11-27 22:25:43 | 显示全部楼层
本帖最后由 帝尊 于 2021-11-27 22:27 编辑

是因为if %TimeFile%==0这一段?
改编成if %TimeFile%=0这样?

也不对,把这个IF删掉也这样。
 楼主| 发表于 2021-12-1 21:36:49 | 显示全部楼层
  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       
复制代码
麻烦大佬帮忙完善一下。
发表于 2021-12-1 23:08:35 | 显示全部楼层
回复 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:27 | 显示全部楼层
回复 9# Batcher
谢谢,我再学学。大受启发。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 19:12 , Processed in 0.031439 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表