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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну вот, я снял небольшое видео, которое показывает, что когда с параметром никакого сообщения нет.
В настройках плеера поставьте качество 720.
 
Видео
 
 
А чтобы сделать наоборот, добавьте ещё одну строку.
 

Код:
b=TargetFolder:TargetFolder=InitialFolder:InitialFolder=b
 
WScript.Echo "Initial"&Chr(9)&InitialFolder&Chr(13)&Chr(10)&Chr(13)&Chr(10)&"Target"&Chr(9)&TargetFolder&Chr(10)&Chr(13)
 
WScript.Quit

Всего записей: 23 | Зарегистр. 20-08-2018 | Отправлено: 16:01 25-04-2021 | Исправлено: Zmy777, 16:24 25-04-2021
D1D1D1D

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

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 16:45 25-04-2021
Zmy777

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Снимите видео. Я не понимаю, про которое окно вы говорите.
 
Может быть вы не комментируете отладочное сообщение?
Тогда просто удалите его. Будет сразу срабатывать.
 

Код:
 
Dim InitialFolder,TargetFolder,ControlDate,b
InitialFolder=WScript.ScriptFullName:InitialFolder=Left(InitialFolder,InStrRev(InitialFolder,"\")-1)
ControlDate=WScript.Arguments.length:if ControlDate>0 Then:ControlDate=WScript.Arguments(0)Else _
ControlDate=InputBox("Введите диск. Без двоеточия.","Input Disk","D"):End If:If ControlDate="" or _
ControlDate=null Then WScript.Quit():End If:if (Len(ControlDate)>1)or(IsNumeric(ControlDate)) Then WScript.Echo _
"Нужна только одна буква."&Chr(10)&Chr(13)&Chr(10)&Chr(13)&ControlDate&" "&Chr(10)&Chr(13):WScript.Quit:End If
b=InStrRev(InitialFolder,"\")-1:if(Len(b)>3)Then:b=Right(InitialFolder,Len(InitialFolder)-3):End If:
If b<0 Then b=UCase(ControlDate)&":\" Else b=UCase(ControlDate)&":\"&Right(InitialFolder,Len(InitialFolder)-3):End If:TargetFolder=b
 
'b=TargetFolder:TargetFolder=InitialFolder:InitialFolder=b
 
ControlDate = CDate("17.03.2021")
 
On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShellApp = CreateObject("Shell.Application")
LogPath = objFSO.GetParentFolderName(WScript.ScriptFullName)
Set LogStream = objFSO.OpenTextFile(LogPath & "\CopyLog.log", 8, True)
LogStream.WriteLine "Начало копирования " & Now()
CopyFiles InitialFolder
LogStream.WriteLine "Конец копирования: " & Now()
LogStream.Close
' процедура рекурсивно перебирает файлы в каталоге
Sub CopyFiles(FolderPath)
On Error Resume Next
Set objFolderItems = objShellApp.NameSpace(FolderPath).Items()
For Each objFolderItem In objFolderItems
If objFolderItem.IsFolder And LCase(Right(objFolderItem.Name, 4)) <> ".zip" Then
CopyFiles objFolderItem.Path
Else
Set objFile = objFSO.GetFile(objFolderItem.Path)
' If objFile.DateCreated > ControlDate Then
If objFile.DateLastModified > ControlDate Then
CopyFile objFolderItem.Path
End If
End If
Next
End Sub
' процедура копирует файл
Sub CopyFile(FilePath)
On Error Resume Next
SubPath = Mid(FilePath, Len(InitialFolder) + 1)
TargetPath = TargetFolder & SubPath
FolderPath = objFSO.GetParentFolderName(TargetPath)
If Not objFSO.FolderExists(FolderPath) Then
CreateFolder FolderPath
End If
' если у файла назначения есть атрибут ReadOnly, снимаем его
If objFSO.FileExists(TargetPath) Then
Set objFile = objFSO.GetFile(TargetPath)
If objFile.Attributes And 1 Then
objFile.Attributes = objFile.Attributes - 1
End If
End If
objFSO.CopyFile FilePath, TargetPath, True
If Err.Number <> 0 Then
LogStream.WriteLine
LogStream.WriteLine FilePath
LogStream.WriteLine Err.Description
LogStream.WriteLine
Err.Clear
Else
LogStream.WriteLine TargetPath
End If
End Sub
' процедура создаёт каталог
Sub CreateFolder (FolderPath)
On Error Resume Next
ParentFolder = objFSO.GetParentFolderName(FolderPath)
If Not objFSO.FolderExists(ParentFolder) Then
CreateFolder ParentFolder
End If
objFSO.CreateFolder FolderPath
End Sub
 
 
 
 
 

Всего записей: 23 | Зарегистр. 20-08-2018 | Отправлено: 17:30 25-04-2021
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zmy777
 
Речь про окно, которое выходит с текстом "Введите диск. Без двоеточия.". То есть, даже если закомментировать как у вас выше - оно все равно выводится по запуску скрипта из проводника. А надо, чтобы его не было, чтобы буква диска F уже была прописана в коде.

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 17:41 25-04-2021
Zmy777

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В переменную z пишите свою букву.
 

Код:
 
Dim InitialFolder,TargetFolder,ControlDate,b,z
z="D"
InitialFolder=WScript.ScriptFullName:InitialFolder=Left(InitialFolder,InStrRev(InitialFolder,"\")-1)
ControlDate=z:If ControlDate="" or _
ControlDate=null Then WScript.Quit():End If:if (Len(ControlDate)>1)or(IsNumeric(ControlDate)) Then WScript.Echo _
"Нужна только одна буква."&Chr(10)&Chr(13)&Chr(10)&Chr(13)&ControlDate&" "&Chr(10)&Chr(13):WScript.Quit:End If
b=InStrRev(InitialFolder,"\")-1:if(Len(b)>3)Then:b=Right(InitialFolder,Len(InitialFolder)-3):End If:
If b<0 Then b=UCase(ControlDate)&":\" Else b=UCase(ControlDate)&":\"&Right(InitialFolder,Len(InitialFolder)-3):End If:TargetFolder=b
 
'b=TargetFolder:TargetFolder=InitialFolder:InitialFolder=b
 
WScript.Echo "Initial"&Chr(9)&InitialFolder&Chr(13)&Chr(10)&Chr(13)&Chr(10)&"Target"&Chr(9)&TargetFolder&Chr(10)&Chr(13)
 
WScript.Quit
 
ControlDate = CDate("17.03.2021")
 
On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShellApp = CreateObject("Shell.Application")
LogPath = objFSO.GetParentFolderName(WScript.ScriptFullName)
Set LogStream = objFSO.OpenTextFile(LogPath & "\CopyLog.log", 8, True)
LogStream.WriteLine "Начало копирования " & Now()
CopyFiles InitialFolder
LogStream.WriteLine "Конец копирования: " & Now()
LogStream.Close
' процедура рекурсивно перебирает файлы в каталоге
Sub CopyFiles(FolderPath)
On Error Resume Next
Set objFolderItems = objShellApp.NameSpace(FolderPath).Items()
For Each objFolderItem In objFolderItems
If objFolderItem.IsFolder And LCase(Right(objFolderItem.Name, 4)) <> ".zip" Then
CopyFiles objFolderItem.Path
Else
Set objFile = objFSO.GetFile(objFolderItem.Path)
' If objFile.DateCreated > ControlDate Then
If objFile.DateLastModified > ControlDate Then
CopyFile objFolderItem.Path
End If
End If
Next
End Sub
' процедура копирует файл
Sub CopyFile(FilePath)
On Error Resume Next
SubPath = Mid(FilePath, Len(InitialFolder) + 1)
TargetPath = TargetFolder & SubPath
FolderPath = objFSO.GetParentFolderName(TargetPath)
If Not objFSO.FolderExists(FolderPath) Then
CreateFolder FolderPath
End If
' если у файла назначения есть атрибут ReadOnly, снимаем его
If objFSO.FileExists(TargetPath) Then
Set objFile = objFSO.GetFile(TargetPath)
If objFile.Attributes And 1 Then
objFile.Attributes = objFile.Attributes - 1
End If
End If
objFSO.CopyFile FilePath, TargetPath, True
If Err.Number <> 0 Then
LogStream.WriteLine
LogStream.WriteLine FilePath
LogStream.WriteLine Err.Description
LogStream.WriteLine
Err.Clear
Else
LogStream.WriteLine TargetPath
End If
End Sub
' процедура создаёт каталог
Sub CreateFolder (FolderPath)
On Error Resume Next
ParentFolder = objFSO.GetParentFolderName(FolderPath)
If Not objFSO.FolderExists(ParentFolder) Then
CreateFolder ParentFolder
End If
objFSO.CreateFolder FolderPath
End Sub
 
 
 
 


Всего записей: 23 | Зарегистр. 20-08-2018 | Отправлено: 18:29 25-04-2021
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zmy777
 
Спасибо, амиго!  
 

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 20:44 25-04-2021 | Исправлено: D1D1D1D, 10:43 26-04-2021
kraeved



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В смежной теме просили батник, удаляющий указанные ярлыки
с рабочих столов пользователя (частного и общего) с учётом того,
что версии Windows и языки неизвестны (а стол могут и перенести).
Сочинил гибрид, использующий VBScript, поэтому делюсь и с вами.

Код:
<!-- :
@echo off
 
rem Ищем пути до рабочих столов пользователя, используя Windows Script Host
for /f "usebackq tokens=1* delims=;" %%a in (`cscript //nologo "%~f0?.wsf"`) do (
    rem Найдя столы, ищем на них файлы
    for %%d in ("%%a" "%%b") do call :delFiles %%d
)
goto :eof
 
:delFiles
    for %%f in (
        %= Перечисляем в столбик файлы, подлежащие удалению =%
        %= "Aknilorak69.lnk" не будет удалён, т.к. это комментарий =%
        "Configure FileMenu Tools.lnk"
        ) do (
        rem Если файлы нашлись, то удаляем их без подтверждения
        if exist "%~1\%%~f" del /f "%~1\%%~f"
    )
goto :eof
-->
 
<job><script language="VBScript">
with CreateObject("Shell.Application")
    set desktopUser = .Namespace(16).Self
    set desktopPublic = .Namespace(25).Self
    WScript.Echo desktopUser.Path & ";" & desktopPublic.Path
end with
</script></job>

Всего записей: 1000 | Зарегистр. 01-03-2003 | Отправлено: 22:27 18-05-2021 | Исправлено: kraeved, 23:07 18-05-2021
kraeved



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тут искали способ создать ZIP в командной строке средствами Windows 7.
Т.к. магической команды нет, то тянемся до функции ОС через PowerShell 2+
или Windows Script Host. Делюсь гибридным батником, использующим JScript.

Код:
<!-- :  
 
:: zip.cmd 2021-05-20
:: Скрипт для сжатия файлов и папок с помошью ZIP, встроенного в Windows
:: Нет поддержки *.* и Unicode имён типа Bjork (ограничение ОС)
:: Проверен на Windows XP x86, Windows 7 x64
 
@cscript //nologo "%~f0?.wsf" %* & goto :eof
-->
 
<job><script language="JScript">
with (WScript) {
    // Проверяем наличие аргументов и показываем инструкцию, если их не хватает
    if (Arguments.Count() < 2) {
        Echo("Usage: zip filename.zip [ file1 dir2 ... *.* not supported ]");
        Quit();
    }
 
    var myFSO = new ActiveXObject("Scripting.FileSystemObject");
    var mySHELL = new ActiveXObject("Shell.Application");
    var myZIPNAME = Arguments.Item(0);
 
    // Проверяем наличие расширения zip у имени архива
    if (!/\.zip$/i.test(myZIPNAME)) {
        Echo("ERROR. Archive extension is not zip: " + myZIPNAME);
        Quit();
    }
 
    // Проверяем существование объектов для сжатия
    for (var i = 1; i < Arguments.Count(); i++) {
        var myOBJ = Arguments.Item(i);
        if (!myFSO.FileExists(myOBJ) && !myFSO.FolderExists(myOBJ)) {
            Echo("ERROR. Invalid path: " + myOBJ);
            Quit();
        }
    }
 
    // Создаём архив (если уже существует, то выходим с ошибкой)
    var myZIPFILE = myFSO.CreateTextFile(myZIPNAME,false);
    myZIPFILE.Write("PK" + String.fromCharCode(5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));
    myZIPFILE.Close();
 
    // Добавляем в архив файлы и папки
    myZIPFILE = mySHELL.NameSpace(myFSO.GetAbsolutePathName(myZIPNAME));
    for (var i = 1; i < Arguments.Count(); i++) {
        myZIPFILE.CopyHere(myFSO.GetAbsolutePathName(Arguments.Item(i)));
        while (true) {
            Sleep(500);
            try {
                myFSO.OpenTextFile(myZIPNAME,8).Close();
                break;
            } catch(e) { }
        }
    }
}
</script></job>

Всего записей: 1000 | Зарегистр. 01-03-2003 | Отправлено: 22:57 20-05-2021 | Исправлено: kraeved, 00:18 23-05-2021
Falcon99



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужна помощь. С одной организации присылают файлы Word в которых есть присоединенный шаблон из их локальной сети. Соответственно документ очень долго открывается. Нашел скрипт который заменяет шаблон на стандартный, но скрипт выполняет операцию открывая документ, соответственно ждать все-равно надо. А можно производить данную операцию без открытия документа?
 
P.s. Текст скрипта который подменяет шаблон для всех файлов в каталоге "D:\1\" ниже.
 

Код:
Sub subChangeTemplate()
    Dim strFile As String
     
    strFile = Dir("D:\1\")
    Do Until strFile = ""
        ChangeFileOpenDirectory "D:\1\"
        Documents.Open FileName:=strFile, ConfirmConversions:=False _
          , ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
          PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
          WritePasswordTemplate:="", Format:=wdOpenFormatAuto
 
        With ActiveDocument
            .UpdateStylesOnOpen = False
            .AttachedTemplate = NormalTemplate
            .Save
            .Close
        End With
 
        strFile = Dir
         
    Loop
End Sub

Всего записей: 607 | Зарегистр. 12-10-2005 | Отправлено: 12:21 26-05-2021
syrenium

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть необходимость, чтобы bat-файл запускался от имени администратора.
Спрашивал в смежной теме, ответили что невозможно.
Где-то нашел код:

Код:
reg query "HKU\S-1-5-19\Environment" >nul 2>&1 & cls
if "%Errorlevel%" NEQ "0" ( cmd /u /c echo. CreateObject^("Shell.Application"^).ShellExecute "%~f0", "", "", "RunAs", 1 > "%Temp%\GetAdmin.vbs"
"%Temp%\GetAdmin.vbs" & del "%Temp%\GetAdmin.vbs" & cls & exit )

Можете расписать, что каждая из этих команд означает?

Всего записей: 671 | Зарегистр. 07-12-2015 | Отправлено: 16:08 26-06-2021
DrakonHaSh



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

Код:
reg query "HKU\S-1-5-19\Environment" >nul 2>&1 & cls
if "%Errorlevel%" NEQ "0" ...

эта часть проверяет запушен ли батник с админскими правами (elevated permissions)
 

Код:
( cmd /u /c echo. CreateObject^("Shell.Application"^).ShellExecute "%~f0", "", "", "RunAs", 1 > "%Temp%\GetAdmin.vbs"
"%Temp%\GetAdmin.vbs" & del "%Temp%\GetAdmin.vbs" & cls & exit )

создает в %temp%\GetAdmin.vbs файл с содержимым

Код:
CreateObject("Shell.Application").ShellExecute "полный путь к запустившему батнику.bat", "", "", "RunAs", 1

который запускает исходный батник уже с админскими правами (если они есть у текущего юзера)
ну и дальше выполняется код из батника, который ниже этих строк но уже с админским правами
 
т.е. батник сначала проверяет есть ли у него уже админские права (чекая через reg query  есть ли у него права на просмотр "HKU\S-1-5-19\Environment" - если есть, значит админские права есть) и если нет - то запускает сам себя еще раз, но уже с админскими правами при помощи скрипта vbs

Всего записей: 2076 | Зарегистр. 08-01-2008 | Отправлено: 17:01 26-06-2021 | Исправлено: DrakonHaSh, 17:14 26-06-2021
syrenium

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DrakonHaSh
Спасибо! Общий смысл понятен.
Если можно для чайников по-порядку:

Код:
reg query "HKU\S-1-5-19\Environment"

Запрашивает раздел реестра S-1-5-19.
А если изменить на S-1-5-18 (LOCAL SYSTEM) или на S-1-5-20 или на S-1-5-21domain-500 (Администратор)?

Код:
 >nul 2>&1 & cls

Это что означает?

Код:
if "%Errorlevel%" NEQ "0"

Если ошибка (не может увидеть S-1-5-19), то что значит NEQ "0"?

Всего записей: 671 | Зарегистр. 07-12-2015 | Отправлено: 18:02 26-06-2021
DrakonHaSh



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

Цитата:

Цитата:
reg query "HKU\S-1-5-19\Environment"
Запрашивает раздел реестра S-1-5-19.
А если изменить на S-1-5-18 (LOCAL SYSTEM) или на S-1-5-20 или на S-1-5-21domain-500 (Администратор)?
автор скрипта выбрал именно это имя  
S-1-5-19    NT Authority    Local Service
не спроста.  
S-1-5-18 не прокатит т.к. он доступен для чтения (reg query) и не для админских привелегий
 

Цитата:

Цитата:
>nul 2>&1 & cls
Это что означает?
>nul 2>&1 перенаправить весь вывод, включая вывод ошибок, команды reg в nul (никуда)
cls - очистить экран
 

Цитата:
if "%Errorlevel%" NEQ "0"
%Errorlevel% - код завершения предыдущей команды.  
Если нет прав, то Errorlevel% будет не равен нулю (NEQ is a 'Not Equal to')
 
если остались еще вопросы, гугл и тестирование скрипта Вам в помощь
 
Добавлено:
кста на ваш изначальный вопрос в предыдущей теме дали более красивое решение с использованием powershell а не временного файла на vbs

Всего записей: 2076 | Зарегистр. 08-01-2008 | Отправлено: 19:18 26-06-2021 | Исправлено: DrakonHaSh, 19:30 26-06-2021
kraeved



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
syrenium
Если вам захочется обойтись без PowerShell, то вот альтернативное решение.

Код:
<!-- :  
@echo off
reg add HKLM /f >nul 2>&1 || (cscript //nologo "%~f0?.wsf" "%~f0" & exit)
echo We have admin privileges now!
pause
goto :eof
-->
 
<job><script language="JScript">
    new ActiveXObject("Shell.Application").ShellExecute(WScript.Arguments.Item(0), "", "", "runas");
</script></job>

На случай, если нужно перезапускать батник с параметрами, то кода будет побольше.

Код:
<!-- :  
@echo off
reg add HKLM /f >nul 2>&1 || (cscript //nologo "%~f0?.wsf" "%~f0" %* & exit)
echo We have admin privileges now! %*
pause
goto :eof
-->
 
<job><script language="JScript">
with (WScript) {
    var args = "";
    for (var i = 1; i < Arguments.Count(); i++) {args += Arguments.Item(i) + " ";}
    new ActiveXObject("Shell.Application").ShellExecute(Arguments.Item(0), args, "", "runas");
}
</script></job>

$ go.cmd Uraaa!
We have admin privileges now! Uraaa!

Всего записей: 1000 | Зарегистр. 01-03-2003 | Отправлено: 13:23 27-06-2021 | Исправлено: kraeved, 13:59 27-06-2021
Skif_off

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть небольшой скрипт для создания ярлыка:

Код:
Set WshShell = CreateObject("WScript.Shell")
Set WshShortcut = WshShell.CreateShortcut(WScript.Arguments.Item(1) & "\" & WScript.Arguments.Item(2) & ".lnk")
WshShortcut.TargetPath = WScript.Arguments.Item(0)
WshShortcut.Save

параметрами передаются полное имя файла, каталог для сохранения и имя. Подскажите, пожалуйста, а если нужно обработать пачку файлов (буду читать из файла), то что писать в цикле? Последние три строки, но без Set?

Всего записей: 6462 | Зарегистр. 28-01-2008 | Отправлено: 19:13 04-07-2021
iNNOKENTIY21



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

Цитата:
Подскажите, пожалуйста, а если нужно обработать пачку файлов (буду читать из файла), то что писать в цикле? Последние три строки, но без Set?
 

В этом же скрипте цикл? Один сеанс скрипта - один объект "WScript.Shell".
 
что то типа (толком не тестил):
script.vbs
Код:

Set wss = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set foo = fso.OpenTextFile(WScript.Arguments.Item(0), 1)
 
Do While Not foo.AtEndOfStream
    Dim str : str = foo.ReadLine
    arr = Split(str, " > ")
    Set WshShortcut = wss.CreateShortcut(arr(1) & "\" & arr(2) & ".lnk")
    WshShortcut.TargetPath = arr(0)
    WshShortcut.Save
loop

data.txt
Код:
"F:\BIN\xpdf-tools\bin64\pdfinfo.exe" > F:\BIN > pdfinfo
"F:\BIN\xpdf-tools\bin64\pdftohtml.exe" > F:\BIN > pdftohtml
"F:\BIN\xpdf-tools\bin64\pdftopng.exe" > F:\BIN > pdftopng
"F:\BIN\xpdf-tools\bin64\pdftoppm.exe" > F:\BIN > pdftoppm
"F:\BIN\xpdf-tools\bin64\pdftops.exe" > F:\BIN > pdftops
"F:\BIN\xpdf-tools\bin64\pdftotext.exe" > F:\BIN > pdftotext
"F:\BIN\xpdf-tools\bin64\pdfdetach.exe" > F:\BIN > pdfdetach
"F:\BIN\xpdf-tools\bin64\pdffonts.exe" > F:\BIN > pdffonts
"F:\BIN\xpdf-tools\bin64\pdfimages.exe" > F:\BIN > pdfimages

 
script.vbs data.txt

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 21:59 04-07-2021
Skif_off

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Имел в виду как правильно организовать вызов метода CreateShortcut внутри цикла. Получается, нужно в каждой итерации вызывать Set, спасибо.
Скрипт для нескольких выделенных файлов будет отдельным, т.к. в этом случае запрашивать имя для каждого LNK-файла будет слишком утомительно.
 
Скрипт почти такой и набросал , только файл в юникоде, цикл While, переменную для метода ReadLine задаю до цикла, каталог назначения вторым параметром, а имя LNK-файла вытаскивал с GetBaseName.

Всего записей: 6462 | Зарегистр. 28-01-2008 | Отправлено: 22:49 04-07-2021
iNNOKENTIY21



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

...кобыла ваша околела, а в остальном всё хорошо

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 23:24 04-07-2021
anynamer



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как скачать набор файлов (например с wget), если есть почти одинаковая ссылка, только в конце нужно менять нумерацию (диапазон цифр)
http://olrs.ru/biblio/246/1.jpg
...
http://olrs.ru/biblio/246/84.jpg
 
Чтобы не писать все 84 ссылки?

Всего записей: 2237 | Зарегистр. 17-05-2010 | Отправлено: 20:26 11-08-2021
Tilks

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
anynamer
cUrl http://olrs.ru/biblio/246/[1-84].jpg --remote-name

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

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