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

Паразит

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

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

// Часть сообщений перенесена в новую тему: https://safezone.cc/threads/izmenenie-daty-modifikacii-fajla.28633/
 
Последнее редактирование:
Назад
Сверху Снизу