Удаление ярлыков на рабочем столе, связанных с сетевыми дисками?
Я работал над тем, чтобы очистить грязный 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 или выхода пользователя из системы.