批处理文件,用于从公共桌面删除复制的快捷方式

时间:2016-02-16 11:36:27

标签: batch-file sccm desktop-shortcut

我目前使用此代码将服务器上的文件夹中的快捷方式复制到C:\ Users \ Desktop:

if not exist "%1" md "%1"
copy /y "%~dp0PlaceShortcutsHere\*.*" "%1"

这会将我放在文件夹中的所有快捷方式复制到桌面。

我现在需要一种方法来删除这些,请记住源文件夹中的快捷方式可以随着时间的推移而改变。

有没有办法比较桌面和服务器上的快捷方式,只删除两个文件夹中的快捷方式,并且只删除计算机桌面上的快捷方式?

这些快捷方式并非机器桌面上的所有快捷方式,还有其他快捷方式,因此只想删除两个位置的快捷方式。我还需要这个是自适应的,因为服务器上的快捷方式将根据需要添加或删除。

这将通过SCCM 2007/12进行部署,但我想先在本地进行测试。

是的,使用GP会更容易,但我们使用的GP已经停止工作,所以我需要一种部署快捷方式的备份方式。

1 个答案:

答案 0 :(得分:0)

花了一些时间,但我自己找到了答案。如果它对将来的任何人有用,请发布此信息。

dir "%~dp0PlaceShortcutsHere\*" /a /b /-p /o:gen>>"%~dp0ShortcutList_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt"
Pushd \\<Server>\<Share>
for /F "delims=" %%G in (ShortcutList_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt) DO Del "C:\Users\Public\Desktop\%%G"
del "%~dp0ShortcutList_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt"

打破它:

dir "%~dp0PlaceShortcutsHere\*" /a /b /-p /o:gen>>"%~dp0ShortcutList_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt"

上面创建了一个文本文件,其中包含快捷方式的名称,以供下一行参考。

Pushd \\<Server>\<Share>
for /F "delims=" %%G in (ShortcutList_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt) DO Del "C:\Users\Public\Desktop\%%G"

上面是暂时映射文件所在的服务器/共享,然后使用“For / F”循环获取文件名,然后将其删除。

del "%~dp0ShortcutList_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt"

最后,这一行删除了创建的文本文件。

这对于文件夹的内容总是在变化时很有用,它会创建文件的最新列表,然后删除列表,防止混淆。

%date:~-4,4%%date:~-7,2%%date:~-10,2%

最后,这个小行会将当前日期输入到文本文档的文件名中,因此如果最终删除行不起作用,您可以在其上看到日期。猜测我也会认为将它放在路径中会使脚本只选择当天的文件,而不是其他任何文件,但我没有测试过。

如果我错了,请纠正我。