【问题标题】:Batch file to remove copied shortcuts from public desktop用于从公共桌面删除复制的快捷方式的批处理文件
【发布时间】:2016-02-16 11:36:26
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: batch-file sccm desktop-shortcut


    【解决方案1】:

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

    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%
    

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

    如果我有任何错误,请纠正我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      相关资源
      最近更新 更多