提取windows10的开机图片的脚本



        平常发现windows10的开机屏幕的图片比较好看,希望保存下来,需要手工操作一通,为了省事,编写了一个批处理,内容很简单,就3行代码。

获取windows10开机图片的批处理脚本

脚本命名为win10_startup_wallpaper.bat

rem 复制开机图片到d:\@\123目录
@echo off
copy  %localappdata%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets\*.*  d:\@\123
d:
cd \@\123

把文件名从64位的哈希值修改为wallpaper序号.jpg

        通过上述批处理文件获得的图片文件存在2个问题,一是名字看起来是64位的哈希值,如下面的文件名,二是文件名没有后缀,需要手工加上.jpg后缀,比较麻烦。虽然可以用Total commander之类的去批量修改文件名,但是依然效率太低了。要完成上述功能,用批处理就比较困难,就写了一段python代码来处理。下面是得到的图片文件,需要改名和加后缀。
670fe8d5fb22c35d396264998921a7afe427cf85ff8ada917ad0613921c4db65
6d4049a4b0116a2df89238694d561dedbf922c7b807534610c58ece2fc87dcf1
a1ca11a7b3e39ec67aee86df7e0a50ef14b7c073773d9330a3e4b698d56992d3
edcc8e59694dbd459e542c520f79daaf6f4ea0184ee26e3ed1b9ba91dcc24df4
f282ff56953127b6caa5aa11e31cf441fd314763bb2613fac6ec469d8ba5cbd3
改名后的文件是:
wallpaper1.jpg
wallpaper2.jpg
wallpaper3.jpg
wallpaper4.jpg
wallpaper5.jpg, 也就是说每个文件都改名为容易看的有意义的文件名,用序号加以区分。
670fe8d5fb22c35d396264998921a7afe427cf85ff8ada917ad0613921c4db65 ----> wallpaper1.jpg

f282ff56953127b6caa5aa11e31cf441fd314763bb2613fac6ec469d8ba5cbd3 ----> wallpaper5.jpg

改名和加后缀的python脚本

python代码命名为c:\code\python\scripts\win10_wallpaper.py

// 编写一个python程序来识别出d:@\123\下的文件名是64位的哈希值的格式
// 并将文件命名为wallpaper1.jpg、wallpaper2.jpg、wallpaper3.jpg 
import os
import re
import shutil
import sys

def rename_hash_files(directory):
    hash_pattern = re.compile(r'^[a-fA-F0-9]{64}$')
    counter = 1  # 用于递增序号
    
    for root, dirs, files in os.walk(directory):
        for file in files:
            if hash_pattern.fullmatch(file):
                # 构建新文件名
                new_file_name = f'wallpaper{counter}.jpg'
                old_file_path = os.path.join(root, file)
                new_file_path = os.path.join(root, new_file_name)

                #检查看看是否出现文件名已经存在,如存在就递增1
                if os.path.exists(new_file_path):
                    i = 1
                    while os.path.exists(new_file_path):
                        i += 1
                        new_file_name = f'wallpaper{i}.jpg'
                        new_file_path = os.path.join(root, new_file_name)
                

				# 重命名文件
                try:
                    os.rename(old_file_path, new_file_path)
                    print(f'已重命名: {old_file_path} -> {new_file_path}')
                    counter += 1
                except OSError as e:
                    print(f'重命名错误: {e}')
                    
# 目标目录
directory_path =  r"d:\@\123"

# 调用函数执行重命名操作
rename_hash_files(directory_path)

最终的批处理脚本

        需要在批处理中去调用python脚本,然后进入目标目录,列出得到的文件名。
最终得到的脚本为win10_startup_wallpaper.bat

rem 复制开机图片到d:\@\123目录
@echo off
c:
cd  %localappdata%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets
copy *.*  d:\@\123
python C:\code\python\scripts\win10_wallpaper.py
dir d:\@\123
d:
cd \@\123

        执行的方法,在windows10下执行d:\bat\win10_startup_wallpaper.bat,假设这个脚本存储在d:\bat目录。得到的文件在d:\@\123中,需要可转存到最终目录如d:\wallpaper。脚本多次执行后会导致在d:\@\123中出现更多的文件,一般没有新的开机图片的话,就不需要执行这个脚本了。通常只需执行一次。
        为何命名目录为@呢?这是为了在Total Commander目录文件名排序时这个一般排在最前面,如果不习惯这个目录命名,可自行修改。后来因为D盘空间不够了,用junction做了一个类似unix的符号链接到其他盘去了,就又建立了一个d:\@\123,可以理解为一个子目录,实际是指向其他盘的一个链接(junction)。至于junction如何使用,有空再写一篇文章,我的主要用途是用于扩展存储空间的,如C盘不够大了,要迁移一些目录到其他盘去,又不想重装软件,无法调整C分区。当然,还有另外的用途,如本机安装的多个系统共享存储同一foxmail的storage。跑题了,总之d:\@\123的1个目录下面的另外1个目录,简单就这样理解了。

修改文件保存的目录

        如果要修改文件保存的目录,可以修改掉脚本中的d:\@\123,如修改为d:\tmp目录。
可根据需要修改脚本名称、代码存放的目录、图片文件保存的目录。

把文件名修改为更有意义的名字

        如果要修改文件名wallpaper1.jpg高山湖泊.jpg之类的,只能用图形查看软件去看图片,根据其内容,自己去命名为更贴切的名字,这一步就没有办法程序识别了。建议把名字修改为更有意义的名字,如碧海蓝天、高山湖泊,森林小径,原野上的鲜花之类的。并转移到自己的结果目录去,如d:\wallpaper。

2024-6-6 22:05:36

进一步改进

        日常有时挺忙的,看到合适的图片,也没时间去执行脚本提取出来,过几天,可能这些windows 登录界面的图片就改变了,替换了,找不到了。为了解决这个问题,可以设置一个定时任务,每天特定时间去转存这些图片到一个位置,注意,转存时不要改名,这样就不会重名覆盖,以后需要时再去转存的目录中加后缀为jpg,然后去选择图片。转存的目录设置在h:\360极速浏览器下载\Origin_Win10_Wallpaper。转存批处理脚本win10_origin_wallpaper.bat

rem  不要改名,每天定时原样转存到原始壁纸目录
@echo off
copy/y  %localappdata%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets\*.*  "h:\360极速浏览器下载\Origin_Win10_Wallpaper"

在定时任务taskschd.msc中设置合适的定时任务,每天定时执行转存脚本即可自动保存下来墙纸,有空再改名、查看、挑选。

2024-6-7 14:47:19

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值