Board logo

标题: [文本处理] 更换Win7的登录背景的批处理,总是 ,Echo处于关闭状态 [打印本页]

作者: batCatDat    时间: 2017-6-23 10:21     标题: 更换Win7的登录背景的批处理,总是 ,Echo处于关闭状态

先上一段批处理代码:
  1. @echo off
  2. echo 此程序是用于,在每次启动Win7时,自动更换Win7的登录背景。它的登录背景的切换,
  3. echo 是基于一组图片进行轮播
  4. echo ----------------------------------------------------------------------
  5. echo 程序思路:Win7文件夹下名字为backgroundDefault.jpg的图片会被当作登录背景图片显示。
  6. echo 程序的主要作用,是在那一组图片中,适当的修改每个图片的名称,
  7. echo 从而实现每次开机的登录界面都不相同
  8. echo -----------------------------------------------------------------------
  9. rem 程序开始
  10. setlocal enabledelayedexpansion
  11. rem 先将L序号的文件名的文件中的序号全部加1
  12. rem 声明一个变量,获取当前L之后的序号
  13. set next = this is a string
  14. set picName = this is also string
  15. pause
  16. rem 统计L开头的文件的个数
  17. set sum = 0
  18. rem 循环求和 L开头的文件的数量
  19. for %%x in (L*.jpg) do (
  20. set picName = %%x
  21. echo %picName%
  22. pause
  23. set next = %picName:~1,1%
  24. echo %next%
  25. pause
  26. rem 重命名文件
  27. ren "%%x" % %%x:%%x:~1,1%=next%
  28. echo % %%x:%%x:~1,1%=next%
  29. pause
  30. set sum=sum+1
  31. )
  32. rem 再将 backgroundDefault.jpg 图片的名称改为“L”加1
  33. ren "backgroundDefault.jpg" "L1"
  34. rem 最后将L(Max),改为backgroundDefault.jpg
  35. ren "L"+%sum% "backgroundDefault.jpg"
  36. echo "L"+%sum%
  37. pause
复制代码
这里面,在 Set 后面,如果加上 “/p”,就会少出这个“Echo处于关闭状态”的错误提示。 但是,里面的字符串截取的地方,不能正常的截取(截取到的结果是 "~1,1",好奇怪啊),再把截取到的结果输出之后,还会出现“Echo处于关闭状态”的错误。
向来好多办法都不行,希望大神指点!
作者: Batcher    时间: 2017-6-23 11:00

set命令里面等号两边不要有空格
作者: batCatDat    时间: 2017-6-23 14:25

回复 2# Batcher
非常的感谢,你的回答,我现在终于把这个程序写好了
作者: batCatDat    时间: 2017-6-23 15:40

回复 2# Batcher
可惜,我写的这个程序,在普通的文件夹里,能够正常执行,但是到了,系统文件夹的时候就一闪而过。我也知道是权限的问题,可是,无论怎么改,都没有办法启动运行,不知道可不可以解答一下啊
作者: batCatDat    时间: 2017-6-23 15:42

回复 2# Batcher
还是看一下,我最终的成果吧:
  1. @echo off
  2. echo 此程序是用于,在每次启动Win7时,自动更换Win7的登录背景。它的登录背景的切换,
  3. echo 是基于一组图片进行轮播
  4. echo ----------------------------------------------------------------------
  5. echo 程序思路:Win7文件夹下名字为backgroundDefault.jpg的图片会被当作登录背景图片显示。
  6. echo 程序的主要作用,是在那一组图片中,适当的修改每个图片的名称,
  7. echo 从而实现每次开机的登录界面都不相同
  8. echo -----------------------------------------------------------------------
  9. rem 程序开始
  10. setlocal enabledelayedexpansion
  11. rem 先将最小序号的L(min),改为backgroundDefault.jpg
  12. rem 前提是不能存在同名的改后的文件的结果,因此
  13. ren "backgroundDefault.jpg" "backgroundDefault"
  14. ren "L1.jpg" "backgroundDefault.jpg"
  15. rem 声明一个变量,获取当前L之后的序号
  16. rem set picName=this is
  17. rem pause
  18. rem 统计L开头的文件的个数(应当多个1出来)
  19. set /a sum=1
  20. rem 循环求和 L开头的文件的数量
  21. for %%x in (L*.jpg) do (
  22. set picName=%%x
  23. rem echo !picName!
  24. rem pause
  25. set next=!picName:~1,1!
  26. set /a next=next-1
  27. rem echo !next!
  28. rem pause
  29. rem 重命名文件
  30. ren !picName! "L"!next!".jpg"
  31. rem echo L!next!.jpg
  32. rem pause
  33. set /a sum=sum+1
  34. )
  35. rem 最后将backgroundDefault,改为backgroundDefault.jpg
  36. ren "backgroundDefault" "L"!sum!".jpg"
  37. rem pause
复制代码

作者: happy886rr    时间: 2017-6-23 17:16

回复 5# batCatDat
代码非常啰嗦,你OEM键值开启没。
  1. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background]
  2. "OEMBackground"=dword:00000001
复制代码

作者: batCatDat    时间: 2017-6-24 09:06

回复 6# happy886rr
那个OEM键值开了的,现在手动可以更改登陆界面的




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