2016-02-16 6 views
0

В настоящее время я использую этот код, чтобы скопировать ярлыки из папки на сервере в C: \ Users \ Desktop:Пакетный файл для удаления скопированных ярлыков из общественного стола

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

Экземпляры ярлыки я помещаю в папку на рабочий стол.

Теперь мне нужен способ их удаления, имея в виду, что ярлыки в исходной папке могут и со временем меняться.

Есть ли способ сравнить ярлыки на рабочем столе и на сервере и удалить только те, которые присутствуют в обеих папках, и только с рабочего стола компьютера?

Эти ярлыки - это не все ярлыки на рабочем столе машин, есть и другие, поэтому требуется только удалить те, которые присутствуют в обоих местах. Мне также понадобится, чтобы это было адаптивным, поскольку ярлыки, присутствующие на сервере, будут добавлены или удалены по мере необходимости.

Это должно быть развернуто через SCCM 2007/12, но сначала я хочу проверить его локально.

И да, использование GP было бы проще, но GP, который мы используем, прекратил работать, поэтому мне нужен резервный способ развертывания ярлыков.

ответ

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" 

выше отображает сервер/доли того, что файлы в временно, а затем использует «Для/F» цикл, чтобы получить имена файлов, а затем удалить их.

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

Наконец, эта строка удалила текстовый файл, который был создан.

Это полезно, когда содержимое папки всегда меняется, оно создаст обновленный список файлов, а затем удалит список позже, предотвращая путаницу.

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

Наконец, эта маленькая линия будет ввести текущую дату в имя файла текстового documet, поэтому необходимо окончательное удаление строки не работает, вы можете увидеть на нем дату. Полагаю, что я подумал бы, что поместить его в пути сделает скрипт только выбирать файлы с текущего дня, а не другие, но я не тестировал это.

Пожалуйста, исправьте меня, если я ошибаюсь.