zoukankan      html  css  js  c++  java
  • 使用批处理复制windows10自动更新的锁屏壁纸

    Windows10家庭版系统每次启动笔记本时经常发现有些锁屏壁纸非常好,有风景还配文字,于是想做个批处理把喜欢的背景图做个备份,并根据文件名和大小判断是否同一文件防止重复备份或覆盖

    PS:锁屏界面看到好的背景图一定要在启动后尽快备份(几十秒),因为这时系统会联网更新下一张图并覆盖原有图片!!!

    PS(2020-06-29):添加了传参,输入jpg.bat start后打开图片目录

    @echo off
    SETLOCAL ENABLEDELAYEDEXPANSION
    
    if "%1" == "start" (
    start %userprofile%Desktop背景图片
    rem echo %0 输出bat文件本身
    rem echo %1 输出第一个参数,这里就是输入的start
    rem echo %2 后面依次
    rem echo %3
    rem echo %4
    exit
    )
    
    rem 使用当前日期和时间的组合位作为文件名,并判断是否在0点到9点,因为这时时间首位为空
    set time_first_bit="%time:~0,1%"
    if %time_first_bit% == " " (
        set name=%date:~0,4%%date:~5,2%%date:~8,2%_0%time:~1,1%%time:~3,2%
        ) else (
        set name=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%
        )
    
    
    rem 先取当前锁屏图片的文件大小并赋值
    for /f "delims=" %%a in ("%windir%webscreenimg105.jpg") do set size1=%%~za
    
    rem 下面的if exist后面的文件名如果有空格时需要用双引号括起来,否则会以文件名中的空格进行分割来执行命令
    rem 变量赋值中防止空格时可以在调用变量时加引号,不用在变量值中加引号,比如调用时用"%a%"而不用a="1 2 3"
    if exist "%userprofile%Desktop背景图片\%name%.jpg" (
        rem 取已有的同名文件大小并赋值
        for /f "delims=" %%a in ("%userprofile%Desktop背景图片\%name%.jpg") do set size2=%%~za
        
        rem 比较文件大小  
        if !size1! == !size2! (
            echo 已存在相同大小的同名文件,不需备份!!!) else (
                echo 存在同名文件,但是大小不相同,准备备份!
                
                rem ren命令的目标文件名只能是文件名,不能有路径!!!
                ren "%userprofile%Desktop背景图片\%name%.jpg" "%name%bak.jpg"
                copy "%windir%webscreenimg105.jpg" "%userprofile%Desktop背景图片\%name%.jpg"
                echo 图片备份成功!!!)
    
    ) else (
    echo 文件不存在,准备备份!
    copy "%windir%webscreenimg105.jpg" "%userprofile%Desktop背景图片\%name%.jpg"
    echo 图片备份成功!!!
    )

    参考:

    [BATCH]DOS批处理--根据当前日期和时间来创建文件夹和文件名_运维_champwang-CSDN博客 https://blog.csdn.net/champwang/article/details/47857477 

    批处理中setlocal enabledelayedexpansion的作用详细整理_DOS/BAT_脚本之家 https://www.jb51.net/article/29323.htm

    奶奶问孙子:4+1等于几 孙子说:等于6-1。 奶奶说:你明明知道答案,为什么不说? 孙子说:年轻人不讲5的……..
  • 相关阅读:
    HDU 3572 Task Schedule(拆点+最大流dinic)
    POJ 1236 Network of Schools(Tarjan缩点)
    HDU 3605 Escape(状压+最大流)
    HDU 1166 敌兵布阵(分块)
    Leetcode 223 Rectangle Area
    Leetcode 219 Contains Duplicate II STL
    Leetcode 36 Valid Sudoku
    Leetcode 88 Merge Sorted Array STL
    Leetcode 160 Intersection of Two Linked Lists 单向链表
    Leetcode 111 Minimum Depth of Binary Tree 二叉树
  • 原文地址:https://www.cnblogs.com/jasy/p/12824881.html
Copyright © 2011-2022 走看看