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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
Dem



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
Задача - открыть все файлы в папке  формате csv и сохранить в формат xlsx
 
На просторах инета нашел такое:

Код:
 
$ExcelWB = new-object -comobject excel.application
 
Get-ChildItem -Path Z:\temp\СКрипт -Filter "*.csv" | ForEach-Object
{
     $Workbook = $ExcelWB.Workbooks.Open($_.Fullname)  
     $newName = ($_.Fullname).Replace($_.Extension,".xlsx")
     $Workbook.SaveAs($newName,51)
     $Workbook.Close($false)
 }
 $ExcelWB.quit()
 

 
Создал файл vbs. но выдает ошибку компиляции - Недопустимый знак.
В скриптах пока 0 (Не знаю даже в тот ли топик пишу).
Помогите решить задачу!
В идеале - пересохранить все csv и xls в папке в xlsx.

Всего записей: 98 | Зарегистр. 09-09-2001 | Отправлено: 11:26 18-09-2019
iNNOKENTIY21



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

Цитата:
Создал файл vbs. но выдает ошибку компиляции - Недопустимый знак.  

Это не vbs, это PowerShell

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 18:37 18-09-2019
Dem



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

Цитата:
Это не vbs, это PowerShell

Можете подсказать, как его запускать?  
Сохранил как ps1, по даблклику открывается в блокноте.
Или может можно это на vbscript сделать?

Всего записей: 98 | Зарегистр. 09-09-2001 | Отправлено: 09:18 19-09-2019 | Исправлено: Dem, 10:34 19-09-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dem
Цитата:
Можете подсказать, как его запускать?  

  • Сперва открыть окно PowerShell (в меню пуск найти ярлык, в выполнить набрать powershell.exe, в проводнике зайти в папку где скрипт и в адресной строке набрать powershell.exe (на 10 винде, на других х.з.), и т.д.), а в нём уже запустить скрипт.
  • Открыть скрипт в Windows PowerShell ISE и там редактировать и запускать по F5 или кнопке пуск (зеленая) на панели
  • ПКМ по скрипту и Открыть с помощью… …powershell.exe
Не забудьте отредактировать под свои реалии пути (Z:\temp\СКрипт) и фильтр ("*.csv")
    Если исполнение скриптов запрещено, надо разрешить — запускаете PowerShell от имени администратора и выполняете команду: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Цитата:
Или может можно это на vbscript сделать?  
Думаю можно, но не мной.

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 19:42 19-09-2019 | Исправлено: iNNOKENTIY21, 20:05 19-09-2019
DenSyo

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dem
тестируйте
Подробнее...
 
для открытия файлов CSV используются заданные региональные параметры.

Всего записей: 218 | Зарегистр. 19-01-2008 | Отправлено: 07:15 20-09-2019 | Исправлено: DenSyo, 07:18 20-09-2019
Sanatory



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
Вторые сутки безрезультатно терзаю гугл запросами.
Ребята, объясните слоупоку.
 
Ситуация следующая.  
Я давно уже пользуюсь скриптом для выкачивания видосов с помощью youtube-dl:

Код:
Set WshShell = CreateObject("WScript.Shell")  
link = InputBox("Enter link for downloading", "link for downloading", "https://www.youtube.com/watch?v=")
If link <> "" Then  
 
  Set WshShell = WScript.CreateObject("WScript.Shell")
 
  strAttr1 = " -o ""n:/! Internet-TEMP/%(title)s.%(ext)s"""
  strAttr2 = " --cache-dir ""n:\! Internet-TEMP\!!!!!!!!!!SaveTube"""
  strAttr3 = " --user-agent ""Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.2704.106 Safari/537.36"""
  strAttr4 = " --hls-prefer-native"
  strAttr5 = " --no-mtime"
  strAttr6 = " --no-check-certificate"
  strAttr7 = " --ignore-config"
  strAttr8 = " --geo-bypass"
  strAttr9 = " --format ""bestvideo[height<1080]+worstaudio"""
  strAttr10 = " --ffmpeg-location ""PATH\TO\ffmpeg.exe"""
   
  youtube_dl = WshShell.ExpandEnvironmentStrings("PATH\TO\youtube-dl.exe")
  WshShell.Run """" & youtube_dl & """ " & link & strAttr1 & strAttr2 & strAttr3 & strAttr4 & strAttr5 & strAttr6 & strAttr7 & strAttr8 & strAttr9 & strAttr10, 1, True
End If

 
 
Решил усовершенствовать его, чтобы для выкачивания роликов с youtube и всех остальных сайтов были разные настройки.
пробовал и так:

Код:
Set WshShell = CreateObject("WScript.Shell")  
link = InputBox("Enter link for downloading", "link for downloading", "https://www.youtube.com/watch?v=")
If link <> "" Then  
 
  Set WshShell = WScript.CreateObject("WScript.Shell")
 
  strAttr1 = " -o ""n:/! Internet-TEMP/%(title)s.%(ext)s"""
  strAttr2 = " --cache-dir ""n:\! Internet-TEMP\!!!!!!!!!!SaveTube"""
  strAttr3 = " --user-agent ""Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.2704.106 Safari/537.36"""
  strAttr4 = " --hls-prefer-native"
  strAttr5 = " --no-mtime"
  strAttr6 = " --no-check-certificate"
  strAttr7 = " --ignore-config"
  strAttr8 = " --geo-bypass"
  strAttr9 = " --format ""bestvideo[height<1080]+worstaudio"""
  strAttr10 = " --ffmpeg-location ""PATH\TO\ffmpeg.exe"""
   
   
function TubeFunction()
  Set re=New RegExp
  With re
    .Pattern = "^.*(??:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/)|(??:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]*).*"
    .IgnoreCase = true
  End With
   
  If re.Test( link ) Then
    TubeFunction = True
  Else
    TubeFunction = false
  End If
  Set re = Nothing
end function
 
  youtube_dl = WshShell.ExpandEnvironmentStrings("PATH\TO\youtube-dl.exe")
   
  If TubeFunction Then
    WshShell.Run """" & youtube_dl & """ " & link & strAttr1 & strAttr2 & strAttr3 & strAttr4 & strAttr5 & strAttr6 & strAttr7 & strAttr8 & strAttr9 & strAttr10, 1, True
  Else
    WshShell.Run """" & youtube_dl & """ " & link & strAttr1 & strAttr2 & strAttr3 & strAttr4 & strAttr5 & strAttr6 & strAttr7, 1, True
  End If
   
   
End If

 
и эдак:

Код:
Set WshShell = CreateObject("WScript.Shell")  
link = InputBox("Enter link for downloading", "link for downloading", "https://www.youtube.com/watch?v=")
If link <> "" Then  
 
  Set WshShell = WScript.CreateObject("WScript.Shell")
 
  strAttr1 = " -o ""n:/! Internet-TEMP/%(title)s.%(ext)s"""
  strAttr2 = " --cache-dir ""n:\! Internet-TEMP\!!!!!!!!!!SaveTube"""
  strAttr3 = " --user-agent ""Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.2704.106 Safari/537.36"""
  strAttr4 = " --hls-prefer-native"
  strAttr5 = " --no-mtime"
  strAttr6 = " --no-check-certificate"
  strAttr7 = " --ignore-config"
  strAttr8 = " --geo-bypass"
  strAttr9 = " --format ""bestvideo[height<1080]+worstaudio"""
  strAttr10 = " --ffmpeg-location ""PATH\TO\ffmpeg.exe"""
   
   
  youtube_dl = WshShell.ExpandEnvironmentStrings("PATH\TO\youtube-dl.exe")
   
  WshShell.Run """" & youtube_dl & """ " & link & TubeFunction, 1, True
 
function TubeFunction()
  Set re=New RegExp
  With re
    .Pattern = "^.*(??:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/)|(??:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]*).*"
    .IgnoreCase = true
  End With
   
  If re.Test( link ) Then
    TubeFunction = strAttr1 & strAttr2 & strAttr3 & strAttr4 & strAttr5 & strAttr6 & strAttr7 & strAttr8 & strAttr9 & strAttr10
  Else
    TubeFunction = strAttr1 & strAttr2 & strAttr3 & strAttr4 & strAttr5 & strAttr6 & strAttr7
  End If
  Set re = Nothing
end function
   
End If

 
Но чёт "не выходит каменный цветок": всякий раз получаю ошибку вида "Не удается найти указанный файл" с указанием источника проблемы, где идёт исполнение  

Код:
WshShell.Run """" & youtube_dl & """ " & link & ...

 
Суть просьбы проста: мне надо, чтобы в зависимости от того, опознаётся ли вводимая ссылка как youtubeОвская, youtube-dl запускался с разными параметрами.
 
Буду неимоверно благодарен за помощь. Выручайте, друзья!
 
ЗЫ
Спасибо за игнор, с ситуацией разобрались в теме Сценарии для Windows

Всего записей: 89 | Зарегистр. 21-04-2010 | Отправлено: 21:20 29-09-2019 | Исправлено: Sanatory, 21:12 04-10-2019
serg3001



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21,
здравствуйте, помните вы как-то скрипт свой по копированию изображений рабочего стола реализовали? Я его использовал успешно, но вчера переустановил винду, последний релиз 1909 поставил, потом снова импортировал задачу в планировщик заданий, сменил имя компа и пользователя на новое, но при запуске задачи возникает ошибка (0х1): Вызов неверной или неизвестной функции. Всё пересмотрел, не пойму из-за чего она возникает. Может вы подскажите где ошибка? Задачу выполняю с наивысшими правами, самое интересное, что на ноуте сейчас всё отлично отрабатывается по выполнению задачи, на нём не переустанавливалась ОС.  
Подробнее...
Подробнее...

Всего записей: 3813 | Зарегистр. 16-10-2010 | Отправлено: 10:44 27-10-2019 | Исправлено: serg3001, 12:24 27-10-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
serg3001
По планировщику не подскажу. Да и нету у меня 1909.
А сам скрипт, без планировщика, запускали в PowerShell консоли, работает на 1909?

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 12:24 27-10-2019
serg3001



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

Цитата:
Изменение политики выполнения
Политика выполнения защищает компьютер от ненадежных сценариев. Изменение политики выполнения может поставить под
угрозу безопасность системы, как описано в разделе справки, вызываемом командой about_Execution_Policies и
расположенном по адресу https:/go.microsoft.com/fwlink/?LinkID=135170 . Вы хотите изменить политику выполнения?
[Y] Да - Y  [A] Да для всех - A  [N] Нет - N  [L] Нет для всех - L  [S] Приостановить - S  Справка
(значением по умолчанию является "N"):

права видно нужно изменить? выбрал вариант А. После этого вручную при запуске скрипт отработал нормально картинка записалась в папку, но в планировщике всё ещё с ошибкой работает.

Всего записей: 3813 | Зарегистр. 16-10-2010 | Отправлено: 12:26 27-10-2019 | Исправлено: serg3001, 12:37 27-10-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
serg3001
И? Теперь работает?
 
Добавлено:
По планировщику не знаю, может там помогут: Windows 10. Обсуждение работы (XIII) - [1] :: Microsoft Windows :: Компьютерный форум Ru.Board здесь это оффтопик вроде как.

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 12:39 27-10-2019
serg3001



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
да, всё нормально. Да, ещё вспомнил, что иногда копируются дубли, т.е. имена разные, а размер один и тот же, после отдельной программой проверяю папку со всеми изображениями на дубли. Вроде проверка по хеш-суммам реализована, почему тогда такое происходит.

Всего записей: 3813 | Зарегистр. 16-10-2010 | Отправлено: 20:36 27-10-2019 | Исправлено: serg3001, 20:42 27-10-2019
iNNOKENTIY21



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

Цитата:
Да, ещё вспомнил, что иногда копируются дубли, т.е. имена разные, а размер один и тот же, после отдельной программой проверяю папку со всеми изображениями на дубли. Вроде проверка по хеш-суммам реализована, почему тогда такое происходит.

Ответил там: Сценарии для Windows

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 21:06 27-10-2019
generator324

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Слабоват я в программировании, подскажите, кто знает. Есть задачка, запустить установку драйвера через devcon:
devcon.exe update ftdiport.inf FTDIBUS\COMPORT&VID_0403
Делаю так:
Код:
 
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "devcon.exe update %Temp%\ftdiport.inf FTDIBUS\COMPORT&VID_0403", 2, true
 

А оно не работает. Понимаю, что двойные кавычки нужны, но как? Голову сломал
И ещё. Одна задачка
Есть конструкция вида, она работает:
Код:
 
WshShell.Run "%windir%\regedit.exe /s " & LCDROM & ":\PROG\Soft\Tune\settings.reg", 2, true
 

Про переменную LCDROM просьба не беспокоиться, она определена вначале скрипта .
А вот конструкция вида:

Код:
 
WshShell.Run "%windir%\regedit.exe /s " & LCDROM & ":\PROG\Soft\Tune Up On The Friday\settings.reg", 2, true  

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

Всего записей: 1090 | Зарегистр. 11-01-2019 | Отправлено: 08:12 29-10-2019
iNNOKENTIY21



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

Цитата:
Понимаю, что двойные кавычки нужны, но как? Голову сломал  

Тоже не гуру, любитель этого дела, этого дела беру по 2 бутылки…
В таких случаях использую wscript.echo для просмотра, что за строка получается.
Отельным файлом или заменить на время проверки WshShell.Run на wscript.echo
Может так?

Код:
wscript.echo "devcon.exe update" & " " & """%Temp%\ftdiport.inf FTDIBUS\COMPORT&VID_0403"""

Код:
wscript.echo "%windir%\regedit.exe /s " & """LCDROM" & ":\PROG\Soft\Tune Up On The Friday\settings.reg"""

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 16:36 29-10-2019
generator324

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

Цитата:
Тоже не гуру, любитель этого дела, этого дела беру по 2 бутылки…  

Сразу видно - НАШ Человек! А я думал, вы только с PS развлекаетесь

Цитата:
В таких случаях использую wscript.echo для просмотра, что за строка получается.  

Во! Я помню, было что-то такое - ведь использовал же! Лет 10 назад, а то и боле. Да, годы берут своё

Цитата:
Может так?  

1-е проверить пока не могу: "железка" занята, чуть позже попробую...
А вот по 2-му - не работает, значение в реестр не добавляется. Вот что выводит:

Я так понимаю, с LCDROM что-то не так - двоеточие лишнее получается, не?

Всего записей: 1090 | Зарегистр. 11-01-2019 | Отправлено: 18:32 29-10-2019
iNNOKENTIY21



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

Цитата:
Про переменную LCDROM просьба не беспокоиться, она определена вначале скрипта

Я и не беспокоился

Цитата:
Я так понимаю, с LCDROM что-то не так - двоеточие лишнее получается, не?

Я понял, что переменная LCDROM в букву диска раскрывается, с двоеточием или нет, вам видне
Тут может быть из за кавычек переменная не раскрывается, я хз этот момент.
Можно попробовать строкой выше соединить строки, скажем:
Код:
LCDROM = "D"
PATH = LCDROM & ":\PROG\Soft\Tune Up On The Friday\settings.reg"
wscript.echo "%windir%\regedit.exe /s " & """" & PATH & """"

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 18:51 29-10-2019
a929151



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

Код:
Const Quote = """"""
Msgbox "This is " & Quote & "myName" & Quote


Всего записей: 1359 | Зарегистр. 30-03-2016 | Отправлено: 18:53 29-10-2019 | Исправлено: a929151, 19:11 29-10-2019
generator324

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

Цитата:
Я понял, что переменная LCDROM в букву диска раскрывается

Ну да. Оно и определяет букву CD-ROM.

Цитата:
с двоеточием или нет, вам виднее

Если бы! Диалетант я в этих вопросах - ДИАЛЕТАНТ! Если только 3-и сразу взять, да жена ругается

Цитата:
Тут может быть из за кавычек переменная не раскрывается, я хз этот момент.  

Я - аналогично.

Цитата:
Можно попробовать строкой выше соединить строки, скажем:

Тут уже я не понимаю, чего надо делать. В общем, приведу скрипт полностью, чтобы понятно стало:
Подробнее...
 
Добавлено:
a929151

Цитата:
Const Quote = """"""
Msgbox "This is " & Quote & "myName" & Quote
 

Эт как? К основному скрипту добавить?

Всего записей: 1090 | Зарегистр. 11-01-2019 | Отправлено: 19:11 29-10-2019
a929151



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Const Quote = """""" в начало скрипта.
& Quote & туда где двойные кавычки нужны.

Всего записей: 1359 | Зарегистр. 30-03-2016 | Отправлено: 19:15 29-10-2019 | Исправлено: a929151, 19:15 29-10-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a929151
Цитата:
Const Quote = """"""
не много кавычек?
 
generator324
Не могу полноценно потестировать сейчас, нету cd-rom
Замените: wscript.echo "%windir%\regedit.exe /s " & """LCDROM" & ":\PROG\Soft\Tune Up On The Friday\settings.reg""" на

Код:
Const Quote = """"
WScript.Echo "%windir%\regedit.exe /s " & Quote & LCDROM & ":\PROG\Soft\Tune Up On The Friday\settings.reg" & Quote

и если весь путь заключён в кавычки, а вместо LCDROM будет буква диска и не будет лишнего двоеточия, то тогда в боевой режим, заменяете уже: WScript.Echo "%windir%\regedit.exe /s " & Quote & LCDROM & ":\PROG\Soft\Tune Up On The Friday\settings.reg" & Quote на
WshShell.Run "%windir%\regedit.exe /s " & Quote & LCDROM & ":\PROG\Soft\Tune Up On The Friday\settings.reg" & Quote, 2, true

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 19:29 29-10-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 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