[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

如果自启动文件夹有对应的BAT文件就跳过,没有就复制自身到启动文件夹,就是可以让BAT开机自动运行。
如果没有Time.txt文件就建立文件并且提示输入文件内容或者选择内容,分别是5或者10。
如果文件夹下有Time.txt文件就检测Time.txt文件内的数字是否为0,如果是,结束并且删除Time.txt和BAT自身。
如果不是就对文件内的数字进行减一并且在10秒后重启。10秒最好有个倒计时,可以随时按空格暂停。按空格暂停以后提示是否要删除Time.txt和BAT自身。

我想不出来不建立TXT文件来控制次数的方式。

感觉有点复杂,感谢各位大佬帮忙写一下。

本帖最后由 帝尊 于 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
)

读取文件这里一直写不好。

TOP

我有想过用set/p file=<Time.txt来进行10个嵌套,但是写着写着就懵了。

TOP

本帖最后由 帝尊 于 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
)

这样可行?

TOP

回复 4# 帝尊


    思路可行,具体代码遇到问题的时候再继续讨论。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  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 关闭?

TOP

本帖最后由 帝尊 于 2021-11-27 22:27 编辑

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

也不对,把这个IF删掉也这样。

TOP

  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
复制代码
麻烦大佬帮忙完善一下。

TOP

回复 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. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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

TOP

返回列表