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

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

Ответить
Настройки темы
VBS/WSH/JS - [решено] Удалить файл с переменной в пути

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


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

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


Прошу не судить строго. Первый день с VBS.

Надо проверить папку system32 на наличие файла file.txt, и удалить его если он там есть.

Вот так скрипт отрабатывает корректно:
Код: Выделить весь код
Set obj = CreateObject("Scripting.FileSystemObject") 
if obj.FileExists("C:\WINDOWS\system32\file.txt") then obj.DeleteFile("C:\WINDOWS\system32\file.txt")
А с переменной среды Windows в пути не работает

Код: Выделить весь код
Set obj = CreateObject("Scripting.FileSystemObject") 
if obj.FileExists("%windows%\system32\file.txt") then obj.DeleteFile("%windows%\system32\file.txt")
Знаю что надо использовать метод ExpandEnvironmentStrings, но как не знаю.

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

 

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


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

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


Кажись, работает так:

Код: Выделить весь код
Dim WINDIR, WshShell, objFSO
Set WshShell = CreateObject("Wscript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
WINDIR = WshShell.ExpandEnvironmentStrings("%WINDIR%/system32")
Set obj = CreateObject("Scripting.FileSystemObject")
if obj.FileExists (WINDIR & "\file.txt") then objFSO.DeleteFile(WINDIR & "\file.txt")

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



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

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


Ветеран


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

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


Цитата viliam:
Надо проверить папку system32 на наличие файла file.txt, и удалить его если он там есть. »
Код: Выделить весь код
Option Explicit

Const SystemFolder = 1

Dim strPath


With WScript.CreateObject("Scripting.FileSystemObject")
	strPath = .BuildPath(.GetSpecialFolder(SystemFolder).Path, "file.txt")
	
	If .FileExists(strPath) Then
		.DeleteFile strPath, True
	End If
End With

WScript.Quit 0
Цитата viliam:
Знаю что надо использовать метод ExpandEnvironmentStrings, но как не знаю. »
Код: Выделить весь код
Option Explicit

Dim strPath


With WScript.CreateObject("Scripting.FileSystemObject")
	strPath = WScript.CreateObject("WScript.Shell").ExpandEnvironmentStrings("%SystemRoot%\System32\file.txt")
	
	If .FileExists(strPath) Then
		.DeleteFile strPath, True
	End If
End With

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

Отправлено: 12:27, 18-06-2014 | #3


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


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

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


Спасибо. А как перед этим убить процесс notepad.exe?
Вот этот скрипт убивает:

Код: Выделить весь код
strComputer = "."
strProcsToKill = "notepad.exe"
Set wbemObjectSet = GetObject("winmgmts://" & strComputer).InstancesOf("Win32_Process")
For Each wbemObject In wbemObjectSet
 If LCase(wbemObject.Name) = strProcsToKill Then wbemObject.Terminate
Next
но не знаю как объединить его с этим:
Код: Выделить весь код
Option Explicit

Const SystemFolder = 1

Dim strPath


With WScript.CreateObject("Scripting.FileSystemObject")
	strPath = .BuildPath(.GetSpecialFolder(SystemFolder).Path, "file.txt")
	
	If .FileExists(strPath) Then
		.DeleteFile strPath, True
	End If
End With

WScript.Quit 0

Отправлено: 14:41, 18-06-2014 | #4


Ветеран


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

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


Например, так:
Код: Выделить весь код
Option Explicit

Const SystemFolder = 1

Dim objSWbemObjectEx
Dim strPath


For Each objSWbemObjectEx In WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").ExecQuery("SELECT * FROM Win32_Process WHERE Name='notepad.exe'")
	objSWbemObjectEx.Terminate
Next

With WScript.CreateObject("Scripting.FileSystemObject")
	strPath = .BuildPath(.GetSpecialFolder(SystemFolder).Path, "file.txt")
	
	If .FileExists(strPath) Then
		.DeleteFile strPath, True
	End If
End With

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

Отправлено: 15:00, 18-06-2014 | #5


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


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

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


Все работает идеально. Благодарю.

Отправлено: 15:44, 18-06-2014 | #6

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


Ну и вдогонку:
Цитата viliam:
%windows% »
Нет такой переменной среды. Есть %windir%.

-------
Mikhail Zhilin

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

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



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] BAT добавление пути в файл конфигурации PowerZ Скриптовые языки администрирования Windows 6 26-03-2014 14:27
CMD/BAT - [решено] Как вывести значение переменной в знаках %% в файл. AFone Скриптовые языки администрирования Windows 5 23-02-2013 22:16
CMD/BAT - [решено] извлечение текущего пути из переменной БАТ файла rivera Скриптовые языки администрирования Windows 2 03-04-2012 21:47
Разное - удалить файл при длинном пути. Friend Microsoft Windows 2000/XP 19 17-12-2009 01:22
CMD/BAT - Надо сделать вывод пути в файл volk1234 Скриптовые языки администрирования Windows 10 04-12-2009 17:55




 
Переход