Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript (Часть 2)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопросы, задачи и их решения по VBScript.

 
Мануал (english, 600 Кб). | Зеркало
MS Scripting 5.6 (700 КБ), включает последнюю версию VBS. Владельцам XP/2000(?) должен быть не нужен. | Зеркало
Немного на wikiпедии.
Предыдущие части: 1
 
Смежные темы:
Сценарии Windows
Командная строка, батники\сценарии (bat, cmd)
Скрипты KiXtart

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:12 12-07-2011 | Исправлено: Smitis, 23:28 26-02-2018
coherent

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Объясните, пожалуйста, кто-нибудь, почему такая конструкция

Код:
Set f = fso.GetFile(WshShell.ExpandEnvironmentStrings("%WinDir%") + "\Tasks\Driver Booster Sheduler.job")

говорит, что файл не найден, хотя файл на месте? Снял с папки Tasks атрибут "системный", не помогло. Руками этот файл преспокойно удаляется.
Собственно задача - скриптом удалять файл С:\WINDOWS\Tasks\Driver Booster Sheduler.job. Буду благодарен за любые подсказки!
 

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 12:54 09-01-2018
vasyosuol_24

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
coherent
А вы уверены, что у вас не моя ситуация?
http://forum.ru-board.com/topic.cgi?forum=33&topic=11963&start=860#10
Навеянно вашим:

Цитата:
Собственно задача - скриптом удалять файл С:\WINDOWS\Tasks\Driver Booster Sheduler.job.

Может, сам файл совсем не там?

Всего записей: 1101 | Зарегистр. 16-01-2013 | Отправлено: 13:21 09-01-2018
coherent

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vasyosuol_24

Цитата:
Может, сам файл совсем не там?

Однозначно там. Открываю папку С:\WINDOWS\Tasks и он на месте.

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 14:49 09-01-2018
vasyosuol_24

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
coherent

Цитата:
Однозначно там. Открываю папку С:\WINDOWS\Tasks и он на месте.

Возможно, я не совсем полно в том посте выразился - речь не о файле (физическом), а о ссылке на него. Сам файл при этом может находиться совсем в другом месте.
Вы какой программой файл удаляете и под какой ОС? Проводником? Сразу скажу: если речь о WINDOWS 10, то тут я вам не советчик .
Попробуйте тот же PsExec применить, как я делал - мож, будет результат. Потому, как системы выше 8-ки на подобные вещи реагируют - тёмный лес...

Всего записей: 1101 | Зарегистр. 16-01-2013 | Отправлено: 15:10 09-01-2018
coherent

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vasyosuol_24

Цитата:
Вы какой программой файл удаляете и под какой ОС

OC XPsp3. Хочу удалить vbs-скриптом, типа fso.DeleteFile...

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 15:21 09-01-2018
vasyosuol_24

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
coherent

Цитата:
OC XPsp3. Хочу удалить vbs-скриптом, типа fso.DeleteFile...

Ну, под ХР должно быть всё просто - сам так удаляю, проблем никогда не было. С ссылками на файл, как видно из моего поста (или - не видно ), столкнулся уже в 7-ке.
А если попробовать мой вариант, прокатит?

Всего записей: 1101 | Зарегистр. 16-01-2013 | Отправлено: 15:28 09-01-2018
Tilks

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
coherent
делите на составляющие и вставляйте вывод, чтобы видеть, где не так

Код:
dim d
Set fso = CreateObject("Scripting.FileSystemObject")  
Set WshShell = CreateObject("WScript.Shell")  
d = WshShell.ExpandEnvironmentStrings("%WinDir%") + "\Tasks\Driver Booster Sheduler.job"
WScript.Echo d
Set f = fso.GetFile(d)
WScript.Echo f.Path

 
если есть файл то два сообщения с путями, если нет, то одно и ошибка ,что такого файла нет.

Всего записей: 2688 | Зарегистр. 14-08-2005 | Отправлено: 16:07 09-01-2018
coherent

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tilks
На ПК, за которым сейчас работаю, нет Driver Booster. Однозначно проверить не могу. Но, если просто закинуть в папку Tasks файл Driver Booster Sheduler.job (переименованный другой файл .job), то все работает. Т.е. два сообщения с путями и если добавить в скрипт fso.DeleteFile f, то файл Driver Booster Sheduler.job удаляется. Вечером проверю на проблемном ПК. Хотя я там все это тоже проделывал.

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 16:27 09-01-2018
vasyosuol_24

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
coherent

Цитата:
На ПК, за которым сейчас работаю, нет Driver Booster.  


Цитата:
Но, если просто закинуть в папку Tasks файл Driver Booster Sheduler.job (переименованный другой файл .job), то все работает.

А не может быть так, что преусловутый Driver Booster "держит" файл? Т.е. не даёт его удалить из вашего скрипта по какой-то причине?
Вы, кстати,  так не написали как вы удаляете файл в "ручном" режиме, а это может быть важно.

Всего записей: 1101 | Зарегистр. 16-01-2013 | Отправлено: 16:33 09-01-2018
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
coherent
файлы, содержащие в пути пробелы

Всего записей: 3079 | Зарегистр. 10-01-2011 | Отправлено: 16:48 09-01-2018
Tilks

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
coherent
у  fso.DeleteFile есть дополнительный аргумент, чтобы удалить readonly.
перед объявлением файла, нужно проверить есть ли такой (fso.FileExists), и делать разветвление, чтобы ошибки не было при вызове fso.GetFile(d), если такого файла нет.
 
http://www.script-coding.com/WSH/FileSystemObject.html

Всего записей: 2688 | Зарегистр. 14-08-2005 | Отправлено: 16:53 09-01-2018
coherent

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tilks
Проделал то же самое на проблемном ПК. Просто закинул в папку Tasks файл Driver Booster Sheduler.job (переименованный другой файл .job) и запустил тот же скрипт из вашего поста. Результат: строка "Set f = fso.GetFile(d)" выдает ошибку "Файл не найден". При этом файл физически существует. Я его туда сам поместил, его можно просмотреть, удалить, переместить (в ТС). И что бы это значило?
 
vasyosuol_24

Цитата:
А не может быть так, что преусловутый Driver Booster "держит" файл?

Я это сразу проверил Unlocker-ом. Файл не блокируется Driver Booster-ом. А в данном эксперименте Driver Booster вообще не имеет отношения к этому файлу.
 

Цитата:
Вы, кстати,  так не написали как вы удаляете файл в "ручном" режиме, а это может быть важно.

F8 в ТС.
 
Proshaa

Цитата:
файлы, содержащие в пути пробелы

Я практически всегда обрамляю пути дополнительными кавычками. Пробовал и здесь, безрезультатно. Кроме того, проблемы с путями были бы на обоих ПК. А здесь на одном срабатывает, а на другом выдает ошибку.

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 19:18 09-01-2018
Zmy111



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
coherent, у вас же есть свой скрипт?
 
Напишите его сюда.
 
Полностью весь скрипт.

Всего записей: 55 | Зарегистр. 19-09-2016 | Отправлено: 19:22 09-01-2018 | Исправлено: Zmy111, 19:23 09-01-2018
coherent

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот мой скрипт:

Код:
Option Explicit
 
Dim WshShell, fso, f
 
Set WshShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
 
'Set f = fso.GetFile(WshShell.ExpandEnvironmentStrings("%WinDir%") + "\Tasks\Driver Booster Sheduler.job")
Set f = fso.GetFile("C:\WINDOWS\Tasks\Driver Booster Sheduler.job")
 
If fso.FileExists(f) Then
  fso.DeleteFile f, 1
End If
 
Set WshShell = Nothing
Set fso = Nothing

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 19:50 09-01-2018
Zmy111



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня ваш скрипт работает.
Хоть с прямым путём, хоть через переменные среды.
 
Я думаю, что это связано с правами доступа.

Всего записей: 55 | Зарегистр. 19-09-2016 | Отправлено: 20:08 09-01-2018 | Исправлено: Zmy111, 20:13 09-01-2018
coherent

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zmy111

Цитата:
Я думаю, что это связано с правами доступа.

Как это проверить?

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 20:31 09-01-2018
Zmy111



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А батник удаляет? А через командную строку удаляет?
 

Всего записей: 55 | Зарегистр. 19-09-2016 | Отправлено: 20:39 09-01-2018
coherent

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zmy111
Батник или комстрока
DEL /Q "C:\WINDOWS\Tasks\Driver Booster Scheduler.job"
удаляют.

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 20:52 09-01-2018
Zmy111



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Попробуйте с кавычками.

Код:
 
Option Explicit
 
Dim WshShell, fso, f
 
Set WshShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
 
Set f = fso.GetFile(WshShell.ExpandEnvironmentStrings("%WinDir%") + "\Tasks\Driver Booster Sheduler.job")
' Set f = fso.GetFile("C:\WINDOWS\Tasks\Driver Booster Sheduler.job")
 
If fso.FileExists(f) Then
  fso.DeleteFile "" & f & "", 1
End If
 
Set WshShell = Nothing
Set fso = Nothing

Всего записей: 55 | Зарегистр. 19-09-2016 | Отправлено: 21:01 09-01-2018 | Исправлено: Zmy111, 21:02 09-01-2018
Tilks

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
coherent
проверил на xp виртуальном - удаляет

Код:
dim path, msg
 
Set WshShell = CreateObject("WScript.Shell")  
path = WshShell.ExpandEnvironmentStrings("%WinDir%") & "\Tasks\Driver Booster Sheduler.job"
WScript.Echo path
 
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(path)) Then
   msg = path & " exists."
   fso.DeleteFile(path)
Else
   msg = path & " doesn't exist."
End If
WScript.Echo msg

Всего записей: 2688 | Зарегистр. 14-08-2005 | Отправлено: 21:04 09-01-2018
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript (Часть 2)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru