标题: [文本处理] 更换Win7的登录背景的批处理,总是 ,Echo处于关闭状态 [打印本页]
作者: batCatDat 时间: 2017-6-23 10:21 标题: 更换Win7的登录背景的批处理,总是 ,Echo处于关闭状态
先上一段批处理代码:- @echo off
- echo 此程序是用于,在每次启动Win7时,自动更换Win7的登录背景。它的登录背景的切换,
- echo 是基于一组图片进行轮播
- echo ----------------------------------------------------------------------
- echo 程序思路:Win7文件夹下名字为backgroundDefault.jpg的图片会被当作登录背景图片显示。
- echo 程序的主要作用,是在那一组图片中,适当的修改每个图片的名称,
- echo 从而实现每次开机的登录界面都不相同
- echo -----------------------------------------------------------------------
- rem 程序开始
-
- setlocal enabledelayedexpansion
-
- rem 先将L序号的文件名的文件中的序号全部加1
- rem 声明一个变量,获取当前L之后的序号
-
- set next = this is a string
- set picName = this is also string
-
- pause
-
- rem 统计L开头的文件的个数
- set sum = 0
-
- rem 循环求和 L开头的文件的数量
-
- for %%x in (L*.jpg) do (
- set picName = %%x
- echo %picName%
- pause
-
- set next = %picName:~1,1%
-
- echo %next%
- pause
-
- rem 重命名文件
- ren "%%x" % %%x:%%x:~1,1%=next%
-
- echo % %%x:%%x:~1,1%=next%
- pause
-
- set sum=sum+1
- )
-
- rem 再将 backgroundDefault.jpg 图片的名称改为“L”加1
-
- ren "backgroundDefault.jpg" "L1"
-
- rem 最后将L(Max),改为backgroundDefault.jpg
-
- ren "L"+%sum% "backgroundDefault.jpg"
-
- echo "L"+%sum%
- 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
还是看一下,我最终的成果吧:- @echo off
- echo 此程序是用于,在每次启动Win7时,自动更换Win7的登录背景。它的登录背景的切换,
- echo 是基于一组图片进行轮播
- echo ----------------------------------------------------------------------
- echo 程序思路:Win7文件夹下名字为backgroundDefault.jpg的图片会被当作登录背景图片显示。
- echo 程序的主要作用,是在那一组图片中,适当的修改每个图片的名称,
- echo 从而实现每次开机的登录界面都不相同
- echo -----------------------------------------------------------------------
- rem 程序开始
-
- setlocal enabledelayedexpansion
-
- rem 先将最小序号的L(min),改为backgroundDefault.jpg
-
- rem 前提是不能存在同名的改后的文件的结果,因此
-
- ren "backgroundDefault.jpg" "backgroundDefault"
-
- ren "L1.jpg" "backgroundDefault.jpg"
-
- rem 声明一个变量,获取当前L之后的序号
- rem set picName=this is
-
- rem pause
-
- rem 统计L开头的文件的个数(应当多个1出来)
- set /a sum=1
-
- rem 循环求和 L开头的文件的数量
-
- for %%x in (L*.jpg) do (
- set picName=%%x
- rem echo !picName!
-
- rem pause
-
- set next=!picName:~1,1!
- set /a next=next-1
- rem echo !next!
- rem pause
-
- rem 重命名文件
- ren !picName! "L"!next!".jpg"
-
- rem echo L!next!.jpg
- rem pause
-
- set /a sum=sum+1
- )
-
- rem 最后将backgroundDefault,改为backgroundDefault.jpg
-
- ren "backgroundDefault" "L"!sum!".jpg"
-
- rem pause
复制代码
作者: happy886rr 时间: 2017-6-23 17:16
回复 5# batCatDat
代码非常啰嗦,你OEM键值开启没。- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background]
- "OEMBackground"=dword:00000001
复制代码
作者: batCatDat 时间: 2017-6-24 09:06
回复 6# happy886rr
那个OEM键值开了的,现在手动可以更改登陆界面的
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |