PDA

Показать полную графическую версию : [решено] Проблема с Java Script


svoboda1984
30-11-2015, 00:05
Задача: Организовать вывод информации о ЖД.

@set @x=0 /*;
@echo off
SetLocal EnableExtensions EnableDelayedExpansion

for /F "skip=1 tokens=1-2" %%A in ('WMIC DiskDrive get Model^,Size^') do (
set name=%%A
set tmp=%%B& call :_Math !tmp!
set size=!Result!
echo Дисковый накопитель: !name! Обьём: !size! Gb>>1.txt
)

:_Math
set Result=
for /F "tokens=1-2 delims=," %%A in ('Cscript //nologo /e:jscript "%~f0" "%~1" "Div" "1073741824"') do (
set tmp=%%B& set old=!tmp:~0,2!
set "Result=%%A,!old!"
)
exit /b
*/try {
switch (WScript.Arguments(1)) {
case "Div":
WScript.Echo (+WScript.Arguments(0) / +WScript.Arguments(2)); break;
}
} catch (e) { }

На выходе получается такое: ST1000DM003-9YN162 ЋЎмс¬: -1,#I Gb
Не показывает необходимый выход в ГБ. Очень плохо знаком с JS, прошу помочь. Никак не разобраться.

svoboda1984
30-11-2015, 00:29
Я так понимаю, что он по своему распознаёт строку Size, Но вот что интересно, при данной обработке LogicalDisk аналогичной строки Size - всё прекрасно отрабатывает. Вообще WMIC живёт какой-то своей жизнью, и всё в нём непросто. Советов множество, но все они индивидуальны, для решения одной проблемы подходят, а для решения другой, но аналогичной уже не работают.

Iska
30-11-2015, 01:44
«wmic.exe» тут совершенно не причём. Сделайте вывод:
wmic.exe DiskDrive get Model, Size

Совет будет только один: переходите на WSH (VBScript/JScript/etc) или PowerShell. Смесь французского с нижегородским имеет право на жизнь, но только тогда, когда сам хорошо разбираешься и в том, и в другом.
For Each objSWbemObjectEx In GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("SELECT Model, Size FROM Win32_DiskDrive")
WScript.Echo "Дисковый накопитель: " & objSWbemObjectEx.Model & " Обьём: " & FormatNumber(objSWbemObjectEx.Size / (2^30), 2) & " Gb"
Next
Get-WmiObject -Class Win32_DiskDrive | ForEach-Object -Process {
"Дисковый накопитель: {0} Обьём: {1:n} Gb" -f $_.Model, $($_.Size / 1Gb)
}

svoboda1984
30-11-2015, 07:09
Iska, спасибо. Уже запустил ps1 из батника, отрабатывает отлично. Буду применять такой приём при возникновении типичных ошибок. Переходить пока не хочу, ибо bat для меня более логичен, проще воспринимается. Но параллельно изучаю и другие методы, в частности js, vbs, ps. Вообще если применять их параллельно, можно автоматизировать практически любой процесс в винде. И главное это интересно, хоть и смахивает порой на головоломку.




© OSzone.net 2001-2012