Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] Удаление файла с рабочих столов по сети

Новый участник


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

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


Доброго времени суток! Помогите с решением задачки.
Необходимо удалить файл (например, file.exe) с рабочих столов всех пользователей в сети домена.
Условия - профили пользователей могут находиться как на диске С так и на D и т.д. Для выполнения задачи необходимо применять psexec
Накатал примерный батник (выполняется из под админа в домене)
Код: Выделить весь код
@echo off
set listfile=computername.txt
rem computername.txt содержит имена компьютеров, например, pc-01, pc-02  и т.д.
for /f "tokens=1" %%i in (%listfile%) do (
   @start cmd /c psexec.exe \\%%i cmd /c del /q/f/a/s "C:\Users\file.exe"
   exit /b
)
exit /b
Но данный вариант работает, если профиль пользователя находится в конкретном заданном месте, например, в c:\users.
Пробую вариант с объявлением переменной %%a (`dir /B "%HomeDrive%\Users"`)
Код: Выделить весь код
@echo off
set listfile=computername.txt
for /f "tokens=1" %%i in (%listfile%) do (
   cmd /v /c for /f "usebackq" %%a in (`dir /B %HomeDrive%\Users`^) do 
   @start cmd /c psexec.exe \\%%i cmd /c del /q/f/a/s %HomeDrive%\Users\%%a\desktop\file.exe
   exit /b
)
exit /b
Но где то беда с синтаксисом - переменная %%a не объявляется...

Отправлено: 11:10, 22-03-2017

 

Ветеран


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

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


Roman_Ko, потому и логон-скрипт, что там ничего допиливать не нужно. А в этом случае как? Нужно:
  1. разрешить отложенное исполнение переменных окружения;
  2. запросить раздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList и разобрать полученное в цикле;
  3. для каждого полученного пути загрузить куст и посмотреть на параметр Desktop аналога HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders загруженного куста;
  4. не забыть выгрузить куст.
Плюс ко всему, не забываем, что за машиной кто-то уже сидит, и его куст уже подгружен в HKU — и это надо учесть.

И это — минимум. Теоретически это можно уместить в одну очень длинную строку, но заморитесь играться с кавычками, операторными скобками и прочей радостью пакетных файлов. И всё это вместо банального:
Код: Выделить весь код
Option Explicit

Dim strFileName
Dim strFullFileName


strFileName = "file.exe"

With WScript.CreateObject("Scripting.FileSystemObject")
	strFullFileName = .BuildPath(WScript.CreateObject("WScript.Shell").SpecialFolders("Desktop"), strFileName)
	
	If .FileExists(strFullFileName) Then
		.DeleteFile strFullFileName, True
	End If
End With

WScript.Quit 0
Цитата Roman_Ko:
Вопрос решён благодаря наводящим вопросам от Iska
Вот рабочий вариант »
Не решён. Профили могут быть расположены не в %HomeDrive%, не в Users, вообще на разных разделах, папка Рабочего стола именоваться не Desktop, может лежать вовне папки профиля пользователя.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:16, 22-03-2017 | #11



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

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


Новый участник


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

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


И вновь Вы оказались правы, я действительно не учел многих важных вещей.
Приятно с Вами общаться. Спасибо.

Отправлено: 09:15, 23-03-2017 | #12


Ветеран


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

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


Цитата Roman_Ko:
Задача решается разными способами. Но в данном случае интересен вариант через psexec. »
так это я ж сразу написал:

логон скриптом накапливаете текстовый файл, где каждая строка путь к этому несчастному файлу на рабочем столе.
а потом вашим любимым psexec по этому списку шарахатете удаление. Или наоборот )))

А в
Цитата Roman_Ko:
for /f "tokens=1" ^%%a in ('dir /B "%HomeDrive%\Users"'^) »
добавил бы на всякий пожарный delims=*

-------
консольный клиент telegram для Windows: www.elapser.info


Отправлено: 13:03, 23-03-2017 | #13



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2008 R2 - Лицензирование удаленных рабочих столов avp26rus Windows Server 2008/2008 R2 11 15-05-2014 23:29
RDP/Citrix/Term - [решено] Как осуществить переключение рабочих столов по одному IP адресу но с разными портами Gameframe Сетевые технологии 7 28-06-2012 14:03
Службы - Служба удаленных рабочих столов. DavyJohnes Microsoft Windows 7 0 02-08-2011 12:29
Интерфейс - Несколько рабочих столов [Windows 7] byStep Программное обеспечение Windows 7 05-04-2011 19:55
несколько рабочих столов perchinka Хочу все знать 7 04-04-2007 01:40




 
Переход