Удаление ярлыков на рабочем столе, связанных с сетевыми дисками?

Я работал над тем, чтобы очистить грязный Active Directory и сетевую файловую систему в том же состоянии, и я понимаю концепцию сопоставления сетевых дисков пользователей и в настоящее время для этого использую комбинацию пакетных и vbs-файлов. Тем не менее, мне нужно начать все сначала, и мне было интересно, есть ли способ обнаружить и удалить ярлыки пользователей на их рабочем столе, связанные с предыдущими сетевыми дисками. (Да, я понимаю, как удалить все сетевые диски, но: как мне обнаружить и удалить ярлыки на рабочем столе, связанные с ними?)

Я уже писал и настраивал свои собственные сценарии для сопоставления дисков и размещения ярлыков. Мне просто нужно избавиться от любых старых ярлыков. Я также не могу позволить себе удалить все файлы.ink на рабочем столе. Только любые, связанные с существующими сетевыми дисками.

Я работаю в среде клиент / сервер XP / Server 2003.

Другой вопрос: если сценарий запускается каждый раз, когда пользователь входит в систему через домен и снова и снова добавляет одни и те же сетевые ресурсы, не удаляя их вначале (даже если это будет один и тот же сценарий каждый раз), будет ли он это делать - делает любой вред? <- Я еще не исследовал этот вопрос много раз, потому что я полз через Google и пробежался по стеку, чтобы попытаться найти решение для первого вопроса / проблемы.

Любая помощь / совет будет принята с благодарностью. Спасибо!

1 ответ

Допустим, что было раньше в партии входа в систему

net use Z: \\OldServer\OldShare

и пользователи создали ярлыки для файлов / каталогов в этой общей папке на своем рабочем столе или в подкаталоге рабочего стола.

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

Простой командный файл для поиска в каталоге рабочего стола и во всех его подкаталогах *.lnk файлы, содержащие \\OldServer\OldShare и удалить все найденные файлы ярлыков

@echo off
for /F "usebackq delims=" %%F in ( `%SystemRoot%\system32\findstr.exe /I /M /S "\\\\OldServer\\OldShare" "%USERPROFILE%\Desktop\*.lnk"` ) do (
   echo Deleting shortcut file "%%F"
   del "%%F"
)

Подробнее о /I /M /S запустить в окне командной строки findstr /?

Как видно, каждый обратный слеш в строке поиска должен быть экранирован еще одним обратным слэшем.

Также можно искать "Z:\\" вместо "\\\\OldServer\\OldShare"

Но будьте осторожны с удалением файла *.lnk только на основе буквы диска, потому что пользователи могли сопоставить другой общий ресурс с этой буквой диска. Эти пользователи не будут рады, если их ярлыки будут удалены.

Пакетный файл может запросить у пользователя подтверждение перед удалением каждого найденного ярлыка, содержащего букву диска, который больше не существует:

@echo off
cls
echo Searching for shortcuts to drive Z: ...
setlocal ENABLEDELAYEDEXPANSION
for /F "usebackq delims=" %%F in ( `%SystemRoot%\system32\findstr.exe /I /M /S "Z:\\" "%USERPROFILE%\Desktop\*.lnk"` ) do (
   echo.
   echo Shortcut "%%~nF" might be not valid anymore.
   echo.
   set Confirm=
   set /p "Confirm=Delete the shortcut (y/n)? "
   if /i "!Confirm!"=="y" (
      attrib -R "%%F"
      del "%%F"
   )
)
endlocal

Это не проблема, если сопоставление сетевого диска с помощью команды вроде

net use Z: \\MyServer\MyShare

делается при входе в пакетный файл при каждом входе в систему. Сообщение об ошибке выводится net use если буква диска Z: уже используется, например, если сопоставление сетевого диска выполнено постоянно, и пользователь сначала запустил компьютер без сетевого подключения, затем подключил сетевой кабель и через несколько секунд ввел имя пользователя и пароль для Вход в Windows и на доменный сервер компании.

Можно использовать

net use Z: /delete 2>nul
net use Z: \\MyServer\MyShare

сначала удалить сопоставление уже существующего сетевого диска, а затем сопоставить общий ресурс с буквой диска Z:. Я не рекомендую использовать подстановочный знак * вместо Z: поскольку это удалило бы также все сопоставления сетевых дисков, созданные пользователем.

Для компьютеров, которые используются не только в корпоративной сети, часто лучше сделать сопоставление дисков непостоянным, используя

net use Z: \\MyServer\MyShare /persistent:no

Теперь Windows не сохраняет в реестре Windows, что \\MyServer\MyShare должны быть сопоставлены автоматически Z: и, следовательно, сопоставление сетевого диска существует только для текущего сеанса пользователя. Сопоставление сетевого диска автоматически удаляется после перезапуска Windows или выхода пользователя из системы.

Другие вопросы по тегам