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

[文本处理] 更换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处于关闭状态”的错误。
向来好多办法都不行,希望大神指点!

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

TOP

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

TOP

回复 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
复制代码
寻寻觅觅寻不见

TOP

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

TOP

回复 2# Batcher
非常的感谢,你的回答,我现在终于把这个程序写好了
寻寻觅觅寻不见

TOP

set命令里面等号两边不要有空格
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表