【问题标题】:Set Wallpaper directory using batch file使用批处理文件设置墙纸目录
【发布时间】:2013-04-04 05:24:25
【问题描述】:

我正在开发一个简单的应用程序,它可以从服务器下载桌面壁纸并将图像保存在Wallpaper Downloads 中。我想将此目录设置为我在Control Panel\Appearance and Personalization\Personalization\Desktop Background 中看到的墙纸目录。我的意思是我想将此文件夹中的每个图像设置为我的墙纸一段时间,就像在personalization 中所做的那样。我已经看到将一张图像设置为墙纸但整个文件夹都没有设置的代码,这不可能吗? 就像在Windows Personalization 中一样,我们可以浏览壁纸文件夹,然后将其中的所有图像设置为我们的壁纸,这些图片会随着指定的时间而变化。

【问题讨论】:

  • 壁纸是一个文件,而不是一个文件夹。注册表中没有这样的键。
  • 我知道,我想问的是如何使用批处理脚本将文件夹内的所有图像设置为墙纸。就像在 Windows 个性化中一样,他们要求浏览一个文件夹,然后将里面的所有图像设置为墙纸,一段时间后会发生变化
  • 您想使用批处理从特殊文件夹中设置“随机”壁纸吗?
  • 基本上你可以用一个批处理脚本来做到这一点,但我更喜欢 AutoIt :)
  • 我们可以假设“更改图片”选项已经启用吗?还是您也需要启用它?

标签: windows command-line batch-file desktop-application wallpaper


【解决方案1】:

HKEY_CURRENT_USER\Control Panel\Desktop\WallPaper 存储当前壁纸位置。

最简单的方法是设置该注册表值以查找“wallpaper.jpg”,然后以数字命名目标文件夹中的所有图像。使用一个简单的循环批处理文件,将一个数字读入批处理文件,添加一个,除非它是您拥有的最后一个图像的编号,然后将该数字写回文本文件。然后将具有该编号的文件的名称更改为“wallpaper.jpg”。然后使用任务计划程序让批处理文件间隔运行。我的电脑上有一个,每次登录时都会更改登录壁纸。

这是一个示例批处理脚本。

@echo off
cd C:\Users\kenneth\wallpapers\logon
set n=
set /p n=<numb.txt
move .\background.jpg .\%n%.jpg
if %n% == 30 set n=0
set /a n=%n%+1
move .\%n%.jpg .\background.jpg
ECHO %n%>numb.txt

在这个例子中,我有 30 张 jpg 图片,编号为 1-30。您必须将第六行中的值调整为您拥有的文件数。

【讨论】:

  • 这是一张图片,但我想使用批处理脚本将文件夹内的所有图片设置为墙纸。就像在个性化中一样,他们要求您浏览一个文件夹,然后选择所有文件
  • 您的回答是迄今为止我所拥有的最好的。可以给我批处理文件吗?
  • 没有任何方法可以通过注册表将我的目录添加到Personalization 吗?如果可以的话,当我们选择Next Desktop Background 时,像更换壁纸这样的复杂情况会更容易。
  • 不,抱歉,没有指向整个文件夹的注册表项。我明天可以尝试发布一个示例批处理脚本。我需要在 Windows 机器上,这样我才能提醒自己语法。
【解决方案2】:

iCodeSometimes 的代码 sn-p 的小改进(@admins:pwese 移至 cmets): 您可以只检查文件是否存在,如果不存在,则重置计数器,而不是维护文件夹中的最大图片数量。 类似的东西

if not exist "%n%.*" set n=0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多