Войти

Показать полную графическую версию : [решено] получение значения (дата и время) из vbs-скрипта


ptrlgnv
28-05-2013, 17:04
Здравствуйте всем. Прошу помощи в получении результата выполнения внутри bat-сценария такого vbs-скрипта (нашел в интернете):

Set objFS=CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
strFile= objArgs(0)
WScript.Echo objFS.GetFile(strFile).DateLastModified

Код записан в файлик modifieddate.vbs . Нужен чтобы получать дату и время последней модификации архива vygr.zip . Выполнение в командной строке команды cscript //nologo modifieddate.vbs vygr.zip возвращает 28.05.2013 12:15:11 , т.е. дату со временем.

А если пытаюсь получить значение вот таким сценарием (взял отсюда (http://www.cyberforum.ru/cmd-bat/thread672170.html#post3685665)):

cd /D D:\Base\
for /f %%i in ('cscript //nologo modifieddate.vbs vygr.zip') do set perem=%%i
Echo %perem%

то получаю 28.05.2013 , т.е. одну дату. Что я делаю не так?

Заранее благодарен откликнувшимся.

Georgio
28-05-2013, 17:11
cd /D D:\Base\
for /f "tokens=*" %%i in ('cscript //nologo modifieddate.vbs vygr.zip') do set perem=%%i
Echo %perem%

ptrlgnv
28-05-2013, 19:22
Ура. Как мало иной раз надо человеку для счастья :) Огромное спасибо. Заработало.

Теперь, правда, появился следующий вопрос. Получая в %perem% значение 28.05.2013 8:28:41, пытаюсь превратить его в число:


call :convert resultat "%perem%"

:convert
set tmp=%~2
set /a %1=%tmp:~8,2%%tmp:~3,2%%tmp:~0,2%%tmp:~11,1%%tmp:~13,2%%tmp:~16,2%
exit /b

Получаю в итоге сообщение:

"set /a resultat=13052882841
Неверное число. Числа ограничены 32 битами точности."

Что это значит?

Georgio
28-05-2013, 20:09
Это означает, что командная строка Windows может оперировать только с числами до 2147483648. Так что, ищите другой алгоритм.

ptrlgnv
28-05-2013, 21:08
ок, понял. Спасибо за оперативностьь

Iska
29-05-2013, 05:54
ptrlgnv, есть смысл целиком перейти на WSH.




© OSzone.net 2001-2012