• Администрация SafeZone приветствует вас на нашем форуме!
    Если вы больше не желаете видеть рекламу при просмотре тем и сообщений - то достаточно просто зарегистрироваться. Для зарегистрированных пользователей реклама не отображается.

VBS Использование аргументов командной строки

Паразит

Пользователь
Сообщения
53
Симпатии
1
#1
Как мне обратиться к неименованному параметру?
По его индексу. Например, к третьему. Я хочу вывести третий аргумент.
VB.NET:
Set obj= Wscript.Arguments
sss= obj.Count()
s = sss
MsgBox (s)
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,600
Симпатии
5,461
#2

Паразит

Пользователь
Сообщения
53
Симпатии
1
#3
Dragokas, вопрос.

Вот у меня есть выделенные в Total Commander файлы.
Я их передаю в виде списка файлов, с помощью параметра %P%S (Т.е., имена с полным путём всех выделенных файлов).
Код:
Sub Touch(FolderPath, FileName, NewDate)
Set FolderPath = WScript.Arguments.Item(0)
sss = FolderPath.ModifyDate
msgBox sss
End Sub
Но есть проблема. Если я не буду создавать FolderPath, то у меня не будет объекта.
Выдаётся ошибка. Я его создаю, и опять проблема. Это же объект, а мне нужна строка. Вообщем, получается замкнутый круг.
Как сделать так, чтобы переданные в виде списка выделенные файлы преобразовывались в нулевой аргумент?
Я вот думаю, может быть мне надо этот список преобразовывать в массив или в словарь?
 
Последнее редактирование:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,600
Симпатии
5,461
#4
Я их передаю в виде списка файлов, с помощью параметра %P%S (Т.е., имена с полным путём всех выделенных файлов).
Не знаю, как это делает Total Commander. Если перестаскивать (или отправлять через контекстное меню "Отправить") несколько файлов на программу, то Windows запускает несколько экземпляров программы, каждой из которых передаёт файл в качестве 1-го аргумента.

Если TC действительно формирует из всех файлов список путей и передаёт их в качестве аргументов 1-му экземпляру программы,
то никуда в скрипте преобразовывать этот список не нужно, т.к. он и так является коллекцией WScript.Arguments, где WScript.Arguments.Item(0) - 1-й аргумент типа Variant/String.
Это не объект, вы не можете выполнить присвоение подобное "Set FolderPath = ..."

Если Вы хотите получить дату модификации, то воспользуйтесь, например, средствами WSH, создав экземпляр объекта Scripting.FileSystemObject
Затем создайте объект типа File с помощью метода GetFile.
VB.NET:
Set oFSO = CreateObject("Scripting.FileSystemObject")

if Wscript.Arguments.Count > 0 then
    sFile = Wscript.Arguments(0)

    if oFSO.FileExists(sFile) then
        Set oFile = oFSO.GetFile(sFile)
        sModify = oFile.DateLastModified
    end if
end if
// Часть сообщений перенесена в новую тему: http://safezone.cc/threads/izmenenie-daty-modifikacii-fajla.28633/
 
Последнее редактирование: