Любой язык - [решено] Проблема с Java Script

Ответить
Аватара пользователя
svoboda1984

Любой язык - [решено] Проблема с Java Script

Сообщение svoboda1984 »

Задача: Организовать вывод информации о ЖД.



@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

Re: Любой язык - [решено] Проблема с Java Script

Сообщение svoboda1984 »

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

Re: Любой язык - [решено] Проблема с Java Script

Сообщение Iska »

«wmic.exe» тут совершенно не причём. Сделайте вывод:



Код:

Код: Выделить всё

wmic.exe DiskDrive get Model, Size

Совет будет только один: переходите на WSH (VBScript/JScript/etc) или PowerShell. Смесь французского с нижегородским имеет право на жизнь, но только тогда, когда сам хорошо разбираешься и в том, и в другом.



WSH

[spoiler]Код:
[/spoiler]

Код: Выделить всё

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








PowerShell

[spoiler]Код:
[/spoiler]

Код: Выделить всё

Get-WmiObject -Class Win32_DiskDrive | ForEach-Object -Process {
    "Дисковый накопитель: {0} Обьём: {1:n} Gb" -f $_.Model, $($_.Size / 1Gb)
}
Аватара пользователя
svoboda1984

Re: Любой язык - [решено] Проблема с Java Script

Сообщение svoboda1984 »

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

Вернуться в «Скриптовые языки администрирования Windows»