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

[系统相关] [分享]根据网上文章做了个修改Win7登陆界面背景图的批处理

[复制链接]
发表于 2011-9-7 16:28:22 | 显示全部楼层 |阅读模式

根据文章 http://liangruijun.blog.51cto.com/3061169/634917 做了个批处理
发出来,大家看看有什么可改进的地方

  1. rem 将与此批处理同目录下的 backgroundDefault.jpg
  2. rem 文件设置成为Win7登陆界面的背景图
  3. rem 本在于Win7下测试通过,当然,只适用于Win7
  4. echo off & cls
  5. SETLOCAL ENABLEDELAYEDEXPANSION

  6. set "JPGNAME=backgroundDefault.jpg"
  7. set "MAXSIZE=250"
  8. set "JPGPATH=%windir%\System32\oobe\info\backgrounds"
  9. set "num=0"
  10. rem 检测文件是否存在
  11. echo.
  12. if not exist "%JPGNAME%". (
  13.    echo. 设置用的JPG文件不存在,无法设置,按任意键退出!
  14.    goto :thend
  15. ) else (
  16.    echo. 已找到 JPG 文件:%JPGNAME%!
  17. )
  18. rem 检测文件大小
  19. echo.
  20. for /f "tokens=3,4 delims= " %%a in ('dir "%~sdp0%JPGNAME%"') do (
  21.    if "%%b" equ "%JPGNAME%" (
  22.       for /f "tokens=1,2 delims=," %%c in ("%%a") do (
  23.          set /a num=%%c * 1000 + %%d
  24.          set /a num=!num! / 1024
  25.          set /a abc=%MAXSIZE% - 1
  26.          if !num! geq !abc! (
  27.             echo. 文件超过 %MAXSIZE% KB!不能设置,按任意键退出!
  28.             goto :thend
  29.          ) else (
  30.             echo. 文件不超过 %MAXSIZE% KB!符合要求,可以设置!
  31.          )
  32.       )
  33.    )
  34. )
  35. rem 修改注册表
  36. echo.
  37. call :setReg
  38. rem 建立文件夹
  39. echo.
  40. if not exist "%JPGPATH%". (
  41.    echo. backgrounds 文件夹不存在,正在建立……
  42.    md "%JPGPATH%"
  43.    if errorlevel 0 (
  44.       echo. 建立 backgrounds 文件夹成功!
  45.    ) else (
  46.       echo. 建立 backgrounds 文件夹失败!
  47.       call :setRegBack
  48.       echo. 已还原注册表设置!按任意键退出!
  49.       goto :thend
  50.    )
  51. )
  52. echo. 欲设置的文件夹确认完成!
  53. rem 复制文件
  54. echo.
  55. for /f "tokens=2 delims= " %%a in ('copy /y "%~sdp0%JPGNAME%" "%JPGPATH%"') do (
  56.    if not %%a equ 0 (
  57.       echo. %JPGNAME% 复制成功!
  58.    ) else (
  59.       echo. %JPGNAME% 复制失败!
  60.       call :setRegBack
  61.       goto :thend
  62.    )
  63. )

  64. echo.
  65. echo. 完成设置,按任意键退出!
  66. :thend
  67. ENDLOCAL
  68. pause >nul
  69. exit/b

  70. :setReg
  71. reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background" /v "OEMBackground" /t REG_DWORD /d 1 /f >nul 2>nul
  72. if errorlevel 0 (
  73.    echo. 注册表修改成功!
  74. ) else (
  75.    echo. 注册表修改失败!
  76. )
  77. goto :EOF

  78. :setRegBack
  79. reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background" /v "OEMBackground" /t REG_DWORD /d 0 /f >nul 2>nul
  80. if errorlevel 0 (
  81.    echo. 已还原注册表设置!按任意键退出!
  82. ) else (
  83.    echo. 无法还原注册表设置!按任意键退出!
  84. )
  85. goto :EOF
复制代码

评分

参与人数 1PB +5 收起 理由
CrLf + 5 辛苦了,感谢分享

查看全部评分

发表于 2011-9-7 17:40:39 | 显示全部楼层
感觉有一些地方可以简化:
1、13到18行可以这样,类似的地方也都可以这样
if not exist "%JPGNAME%" goto :thend
echo. 已找到 JPG 文件:%JPGNAME%!
2、24到26行的set/a可以连续赋值
3、setReg和setRegBack可以合并,然后用call带进参数

评分

参与人数 1PB +5 收起 理由
CrLf + 5 乐于助人

查看全部评分

 楼主| 发表于 2011-9-10 17:03:29 | 显示全部楼层
回复 2# JooKin
谢谢你的宝贵意见,不过关于第二点,简化那几个 "set /a" ,这个我感觉有难度(可能是基础没学好),能否请你帮我简化一下,把这几行简化后的代码帖出来?
发表于 2011-9-10 19:26:45 | 显示全部楼层
回复 3# MantisLin


试试这样行不行:
  1. set /a num=(%%c*1000+%%d)/1024, abc=MAXSIZE-1
复制代码

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 乐于助人

查看全部评分

 楼主| 发表于 2011-9-13 09:35:43 | 显示全部楼层
本帖最后由 MantisLin 于 2011-9-13 09:37 编辑

回复 4# Batcher


  你好,Batcher,根据你的代码试了一下,结果输出错误提示
  1. 此时不应有 /1024。
复制代码
不好意思这几天忙着过中秋没看论坛,回答得久了点
发表于 2011-9-13 11:13:55 | 显示全部楼层
回复 5# MantisLin


    把每条算式各自加上双引号,或者直接用转义符将括号转义即可
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 01:51 , Processed in 0.017858 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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