Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удалить неверные ярлыки

Ответить
Настройки темы
CMD/BAT - Удалить неверные ярлыки

Ветеран


Сообщения: 2183
Благодарности: 721


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: sov44
Дата: 06-06-2014
Описание: без использования сторонних утилит
Многие программы-чистильщики имеют возможность удалять с рабочего стола (и не только) неверные ярлыки. Хочется понять принцип их работы и возможность реализации батником (без использования сторонними утилитами).

Отправлено: 11:01, 06-06-2014

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Принцип работы простой — проверить существование файлового объекта по целевому пути ярлыка и, в случае его отсутствия, вывести запрос на удаление такого ярлыка.

Цитата sov44:
и возможность реализации батником. »
Никак. Сторонние утилиты, WSH, PoSH. Надо заметить, что работать нужно будет со всеми возможными целями. В том числе и с ShellLink, и с MSI.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:07, 06-06-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


Цитата Iska:
Никак. Сторонние утилиты, WSH, PoSH. »
Цитата sov44:
возможность реализации батником »
Значит нужно сделать их вызов батником. Ищется реализация.

Отправлено: 11:36, 06-06-2014 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Как-то так (перечисление без удаления):
Код: Выделить весь код
Option Explicit

Dim strSourceFolder

Dim objWshShell
Dim objFSO
Dim objShell

Dim objFile
Dim objRecord


Set objWshShell = WScript.CreateObject("WScript.Shell")
Set objFSO      = WScript.CreateObject("Scripting.FileSystemObject")
Set objShell    = WScript.CreateObject("Shell.Application")

strSourceFolder = objWshShell.SpecialFolders("Desktop")

With objFSO
	If .FolderExists(strSourceFolder) Then
		For Each objFile In .GetFolder(strSourceFolder).Files
			If StrComp(.GetExtensionName(objFile.Name), "lnk", vbTextCompare) = 0 Then
				On Error Resume Next
				Set objRecord = WScript.CreateObject("WindowsInstaller.Installer").ShortcutTarget(objFile.Path)
				
				If Err.Number <> 0 Then
					Err.Clear
					On Error Goto 0
					
					With objWshShell.CreateShortcut(objFile.Path)
						If Not objFSO.FileExists(.TargetPath) Then
							With objShell.NameSpace(objFSO.GetParentFolderName(objFile.Path)).ParseName(objFile.Name).GetLink
								If Not objFSO.FileExists(.Target.Path) Then
									WScript.Echo objFile.Name
								End If
							End With
						End If
					End With
				Else
					On Error Goto 0
					Set objRecord = Nothing
				End If
			End If
		Next
	Else
		WScript.Echo "Can't find Desktop folder [" & strSourceFolder & "]."
	End If
End With

Set objShell    = Nothing
Set objFSO      = Nothing
Set objWshShell = Nothing

WScript.Quit 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:11, 06-06-2014 | #4


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off
chcp 1251>nul
for %%i in (*.lnk) do (
 for /f "tokens=*" %%j in ('
  find ":\"^<"%%i"^| find /v "/"
 ') do (
  chcp 866>nul
  if not exist "%%j" (
   set /p"=%%~nxj not exist. "<nul
   del "%%i"&& (
   echo %%~nxi was deleted.
   )|| (
   echo Failed to delete %%~nxi.
   )
   )
  )
 )
pause>nul
exit /b
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:32, 06-06-2014 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Georgio:
find ":\"^<"%%i"^| find /v "/" »
А если там будет ссылка на сетевой ресурс, ShellLink или это ярлык MSI, которые вообще могут указывать на установленное приложение, но не существующее ещё на диске (это предусмотрено самой технологией)?

Отправлено: 02:24, 07-06-2014 | #6


Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


Цитата Iska:
А если там будет ссылка на сетевой ресурс, ShellLink или это ярлык MSI, которые вообще могут указывать на установленное приложение, но не существующее ещё на диске (это предусмотрено самой технологией)? »
Georgio, Iska command line only

Отправлено: 19:07, 11-06-2014 | #7


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


sov44, speak in russian, please.

Отправлено: 19:59, 11-06-2014 | #8


Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


Цитата Iska:
А если там будет ссылка на сетевой ресурс »
Iska, мой вариант. как будет выглядеть батник?

Отправлено: 12:58, 09-10-2014 | #9


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


sov44, выложите пример такого ярлыка (в архиве).

Отправлено: 13:10, 09-10-2014 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удалить неверные ярлыки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как удалить ярлыки (в меню "Пуск" - "Программы", с рабочего стола, и т. д.) Craager Автоматическая установка Windows 2000/XP/2003 167 08-05-2015 02:50
[решено] Как вручную удалить вирус который не могут удалить антивирусы. LiSS71 Лечение систем от вредоносных программ 3 20-08-2011 23:32
CMD/BAT - Как удалить сет.диски,добавить,добавить ярлыки на раб.стол. Nuc7ear Скриптовые языки администрирования Windows 0 10-03-2011 20:16
Неверные пропорции при воспроизведении файла moi Eliyahu Видео и аудио: обработка и кодирование 8 04-06-2010 01:19
Разное - [решено] Как удалить ярлык с рабоч. стола, если в контекстном меню нет пункта Удалить Denkxx Microsoft Windows 7 5 25-09-2009 14:56




 
Переход