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

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


根据文章 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
复制代码
1

评分人数

    • CrLf: 辛苦了,感谢分享PB + 5

感觉有一些地方可以简化:
1、13到18行可以这样,类似的地方也都可以这样
if not exist "%JPGNAME%" goto :thend
echo. 已找到 JPG 文件:%JPGNAME%!
2、24到26行的set/a可以连续赋值
3、setReg和setRegBack可以合并,然后用call带进参数
1

评分人数

    • CrLf: 乐于助人PB + 5

TOP

回复 2# JooKin
谢谢你的宝贵意见,不过关于第二点,简化那几个 "set /a" ,这个我感觉有难度(可能是基础没学好),能否请你帮我简化一下,把这几行简化后的代码帖出来?

TOP

回复 3# MantisLin


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

评分人数

    • CrLf: 乐于助人技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 MantisLin 于 2011-9-13 09:37 编辑

回复 4# Batcher


  你好,Batcher,根据你的代码试了一下,结果输出错误提示
  1. 此时不应有 /1024。
复制代码
不好意思这几天忙着过中秋没看论坛,回答得久了点

TOP

回复 5# MantisLin


    把每条算式各自加上双引号,或者直接用转义符将括号转义即可

TOP

返回列表