2015-04-05 75 views
0

我想弄清楚如何编写一个批处理文件,我可以在多台计算机上使用来设置背景。我尝试了一些我在其他搜索中看到的一些建议,但除此之外,我不确定如何执行此操作。任何人有任何建议?谢谢!在XP中设置壁纸的脚本?

+0

http://stackoverflow.com/questions/7779491/changing-wallpaper-with-a-batch-file-on-program-close-possible – user3719066 2015-04-05 21:52:59

+0

我看到了在我的搜索类似的问题,现在我有批处理文件说成功完成,但背景并没有真正改变... – Raistlin 2015-04-05 22:11:21

回答

0

线使用的是:在关于该命令的信息的命令提示窗口reg add /?

@%SystemRoot%\System32\reg.exe add "HKCU\Control Panel\Desktop" /v Wallpaper /t REG_SZ /d "C:\Windows\winnt.bmp" /f 

运行。

我真的很惊讶,你自己找不到,因为已经有Changing Wallpaper with a batch file, on program close. Possible?而在[batch-file] wallpaper上搜索堆栈溢出会返回41个结果。

+0

啊,我想我在开始时错过了“@%SystemRoot%\ System32 \” 。现在弹出的窗口要求确认,并表示已成功完成;但是,它并没有真正刷新壁纸。有什么我需要得到它来更新? – Raistlin 2015-04-05 22:07:34

+0

'@'只是在执行时隐藏命令并且'%SystemRoot%\ System32'通常是不需要的,因为这个目录默认是在Windows XP环境变量'PATH'中的第一个目录。更改Windows注册表值当然不会导致Windows桌面的刷新。但是,这不应该打扰你,因为用户在下次Windows登录后会自动显示墙纸。由于壁纸是一种用户设置,我不太喜欢你想要做的事情,因此不会进一步帮助。抱歉。 – Mofi 2015-04-05 22:22:05

+0

如果您想在vbscript中发布代码,并在Windows 7 32位上测试HTA(禁用UAC),请使用HTA。只是编辑你的文章,并添加这些标签vbscript和HTA – Hackoo 2015-04-05 22:33:55

0

此HTA在下测试,Windows 7 32位,UAC禁用。只是尝试一下你的XP,并告诉我它是否会起作用。 祝你好运!

ChangeWallpaper.hta

<html> 
<head> 
<title>Application pour changer le fond d'écran dans Windows 7 © Hackoo © 2013</title> 
<HTA:APPLICATION 
APPLICATIONNAME="Application pour changer le fond d'écran dans Windows 7" 
ID="Application pour changer le fond d'écran dans Windows 7" 
ICON="Explorer.exe" 
BORDER="dialog" 
INNERBORDER="no" 
MAXIMIZEBUTTON="No" 
SCROLL="no" 
VERSION="1.0"/> 
<style> 
Label 
{ 
color : #123456; 
font-family : "Courrier New"; 
} 
BODY {background-color:DarkOrange;} 
input.button { background-color : #EFEFEF; 
color : #000000; cursor:hand; 
font-size: 11px; font-family: Verdana, Arial, Helvetica, sans-serif; } 
} 
.alt2, .alt2Active 
{ 
background: #E1E4F2; 
color: #000000; 
}  
</style> 
</head> 
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="YES"> 
<script language="VBScript"> 
Option Explicit 
Dim Titre,fso,MyFolder,TabFolder,DossierCourant,DossierCourantIMAGE 
Titre = "Application pour changer le fond d'écran dans Windows 7 © Hackoo © 2013" 
set fso = CreateObject("Scripting.FileSystemObject") 
MyFolder = fso.GetAbsolutePathName(".") 
TabFolder = Split(MyFolder,"\") 
DossierCourant = TabFolder(UBound(TabFolder)) 
DossierCourantIMAGE = DossierCourant&"_IMAGE_FOND" 
If Not fso.FolderExists(DossierCourantIMAGE) Then 
    CreateFolder(DossierCourantIMAGE) 
End if 
'***************************************************************** 
Sub Window_OnLoad 
    CenterWindow 640,200 
End Sub 
'***************************************************************** 
Sub CenterWindow(x,y) 
    Dim iLeft,itop 
    window.resizeTo x, y 
    iLeft = window.screen.availWidth/2 - x/2 
    itop = window.screen.availHeight/2 - y/2 
    window.moveTo ileft, itop 
End Sub 
'***************************************************************** 
Sub OnClickButtonCancel() 
    Window.Close 
End Sub 
'***************************************************************** 
Function DblQuote(strIn) 
    DblQuote = Chr(34) & strIn & Chr(34) 
End Function 
'***************************************************************** 
Sub CreateFolder(strPath) 
    set fso = CreateObject("Scripting.FileSystemObject") 
    If strPath <> "" Then 
     If Not fso.FolderExists(fso.GetParentFolderName(strPath)) then Call CreateFolder(fso.GetParentFolderName(strPath)) 
     fso.CreateFolder(strPath) 
    End If 
End Sub 
'***************************************************************** 
SUB ChangeFondEcran() 
    Dim MyNewWallPaper,NomMyNewWallPaper,NewWallPaperName,WshShell,MonFondEcranBDR,CheminAncienWallpaper,i,MonTab,Destination 
    Set WshShell = CreateObject("WScript.Shell") 
    MonFondEcranBDR = "HKEY_CURRENT_USER\Control Panel\desktop\Wallpaper" 
    CheminAncienWallpaper = WshShell.RegRead(MonFondEcranBDR) 
    MsgBox CheminAncienWallpaper,64,Titre 
'Copie de Sauvegarde de l'ancien Wallpaper 
    Call CopyFile(CheminAncienWallpaper,DossierCourantIMAGE) 
    MyNewWallPaper = fichecran.Value 
    NomMyNewWallPaper = Split(MyNewWallPaper,"\") 
    NewWallPaperName = NomMyNewWallPaper(UBound(NomMyNewWallPaper)) 
    'MsgBox MyNewWallPaper,64,Titre 
    If MyNewWallPaper <> "" Then 
     MonTab = Split(CheminAncienWallpaper,"\") 
     Destination = "" 
     For i = LBound(MonTab) To UBound(MonTab) - 1 
      Destination = Destination + MonTab(i) + "\" 
     Next 
     'MsgBox Destination,64,Titre 
'Supprimer l'ancien Wallpaper 
     Call DeleteMyOldFile(CheminAncienWallpaper) 
     Call CopyFile(MyNewWallPaper,Destination) 
     Call Renommer(Destination & NewWallPaperName,MonTab(UBound(MonTab))) 
     RefreshExplorer() 
    End if 
    Set WshShell = Nothing 
END Sub 
'***************************************************************** 
Function CopyFile(Source,Destination) 
    Dim FSO 
    Set FSO = CreateObject("Scripting.FileSystemObject") 
    If FSO.FolderExists(Destination) Then 
     If Right(Destination,1) <> "\" Then 
      Destination = Destination & "\" 
     End if 
     FSO.GetFile(Source).Copy Destination & FSO.GetFileName(Source),True 
     MsgBox "Copie du fond d'écran : " & DblQuote(FSO.GetFileName(Source)) & " dans le dossier " & DblQuote(Destination),64,Titre 
    Else 
     MsgBox DblQuote(Destination) & " n'existe pas !",48,Titre 
    End If 
End Function 
'***************************************************************** 
'Fonction pour écrire le résultat dans un fichier texte 
Sub WriteLog(strText,LogFile) 
    Dim fs,ts 
    Const ForAppending = 8 
    Set fs = CreateObject("Scripting.FileSystemObject") 
    Set ts = fs.OpenTextFile(LogFile,ForAppending,True) 
    ts.WriteLine strText 
    ts.Close 
End Sub 
'***************************************************************** 
Function DeleteMyOldFile(Source) 
    Dim FSO 
    Set FSO = CreateObject("Scripting.FileSystemObject") 
    If FSO.FileExists(Source) Then 
     FSO.GetFile(Source).Delete False 
    End If 
End Function 
'****************************************************************** 
Function Renommer(Fichier1,Fichier2) 
    Dim Ws,Command,Execution 
    Set Ws = CreateObject("WScript.Shell") 
    Command = "Cmd /C Ren "&Fichier1&","&Fichier2&"" 
    Execution = Ws.Run(Command,0,True) 
End Function 
'****************************************************************** 
Sub Kill(Process) 
Dim Ws,Command,Execution 
    Set Ws = CreateObject("WScript.Shell") 
    Command = "cmd /c Taskkill /F /IM "&Process&"" 
    Execution = Ws.Run(Command,0,True) 
End Sub 
'***************************************************************** 
Sub Start(Process) 
Dim Ws,Command,Execution 
    Set Ws = CreateObject("WScript.Shell") 
    Command = "cmd /c Start "&Process&"" 
    Execution = Ws.Run(Command,0,True) 
End Sub 
'***************************************************************** 
Sub RefreshExplorer() 
    Kill("Explorer.exe") 
    Start("Explorer.exe") 
End Sub 
</script> 
<center> 
<B>Veuillez choisir l'image pour changer le fond d'écran </B><br><br> 
<input type="file" size="50" name="fichecran" style="font-weight: bold; id="file1" /> 
<br><br><br> 
<input type="Submit" style="width: 180px" style="font-weight: bold; name="OK" id="OK" value="Changer le fond d'écran" onclick="ChangeFondEcran()"> 
<input type="button" style="width: 100px" style="font-weight: bold; name="Cancel" id="Cancel" value="Sortir" onclick="OnClickButtonCancel"><br><br> 
</body> 
</html>