Задача: Организовать вывод информации о ЖД.
@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, прошу помочь. Никак не разобраться.
Любой язык - [решено] Проблема с Java Script
-
svoboda1984
Re: Любой язык - [решено] Проблема с Java Script
Я так понимаю, что он по своему распознаёт строку Size, Но вот что интересно, при данной обработке LogicalDisk аналогичной строки Size - всё прекрасно отрабатывает. Вообще WMIC живёт какой-то своей жизнью, и всё в нём непросто. Советов множество, но все они индивидуальны, для решения одной проблемы подходят, а для решения другой, но аналогичной уже не работают.
-
Iska
Re: Любой язык - [решено] Проблема с Java Script
«wmic.exe» тут совершенно не причём. Сделайте вывод:
Код:
Совет будет только один: переходите на WSH (VBScript/JScript/etc) или PowerShell. Смесь французского с нижегородским имеет право на жизнь, но только тогда, когда сам хорошо разбираешься и в том, и в другом.
WSH
[spoiler]Код: [/spoiler]
PowerShell
[spoiler]Код: [/spoiler]
Код:
Код: Выделить всё
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"
NextPowerShell
[spoiler]Код: [/spoiler]
Код: Выделить всё
Get-WmiObject -Class Win32_DiskDrive | ForEach-Object -Process {
"Дисковый накопитель: {0} Обьём: {1:n} Gb" -f $_.Model, $($_.Size / 1Gb)
}-
svoboda1984
Re: Любой язык - [решено] Проблема с Java Script
Iska, спасибо. Уже запустил ps1 из батника, отрабатывает отлично. Буду применять такой приём при возникновении типичных ошибок. Переходить пока не хочу, ибо bat для меня более логичен, проще воспринимается. Но параллельно изучаю и другие методы, в частности js, vbs, ps. Вообще если применять их параллельно, можно автоматизировать практически любой процесс в винде. И главное это интересно, хоть и смахивает порой на головоломку.