Я действительно понятия не имею, как преобразовать результат из следующего текстового файла в переменную в моем пакетном файле.

Сначала мне нужно запустить эту строку WMIC.

wmic PAGEFILE get AllocatedBaseSize /Value > test.txt

Результат из test.txt занимает 6 строк, только в третьей строке есть символы, и это тот, который мне нужно установить в качестве моей переменной.

Содержание test.txt

AllocatedBaseSize=16328
1
htan68 7 Мар 2014 в 11:52

4 ответа

Лучший ответ

Это напрямую установит переменную без промежуточного файла

for /f "tokens=*" %%a in (
    'wmic PAGEFILE get AllocatedBaseSize /value^|find "="'
) do for %%b in (%%a) do set "AllocatedBaseSize=%%b"

echo %AllocatedBaseSize%

Двойной цикл for предназначен для удаления дополнительного символа CR (0x0D) и конца строк вывода из WMIC.

1
MC ND 7 Мар 2014 в 08:52

Чтобы поместить нужную строку в файл:

wmic PAGEFILE get AllocatedBaseSize /Value | FINDSTR "Allocated" > test.txt

Чтобы получить содержимое файла в переменной:

set /p Base=<test.txt  
0
Mark Setchell 7 Мар 2014 в 08:01
wmic PAGEFILE get AllocatedBaseSize /Value |find "=" > test.txt

Другой способ снять шкуру с кошки (без создания файла):

for /f %%i in ('wmic PAGEFILE get AllocatedBaseSize ^|findstr "." ^|find /v "Allocated"') do set base=%%i

Или в этом случае еще проще:

for /f %i in ('wmic PAGEFILE get AllocatedBaseSize ^|findstr "[0-9]"') do set as=%i
0
Stephan 7 Мар 2014 в 09:15

Не уверен, что лучше опубликовать это как новую тему. Теперь я почти закончил свой пакетный скрипт, пока я тестирую на одном целевом хосте. В пакетном файле есть проблемы с разделением, и этот хороший сценарий был найден на http: // helloacm. com / math-example-using-windows-batch-script /. Я почти не понимаю, как это работает, но не знаю, как изменить окончательный результат последнего отраженного эхом "echo% o%"

Примере:

  • AllocatedBaseSize = 3931
  • CurrentUsage = 94
  • PeakUsage = 94

Вот код из приведенной выше ссылки, я изменил значение C на 3:

setlocal

    set /a a=%CurrentUsage%
    set /a b=%AllocatedBaseSize%
    set /a c=3

    set /a d=a/b
    set o=%a%/%b%=%d%.


:work   
    set /a a=(a-d*b)*10
    if "%a%"=="0" goto clean_up
    set /a d=a/b
    set /a c=c-1
    if "%c%"=="0" goto clean_up
    set o=%o%%d%

    goto work

:clean_up
    echo %o%


endlocal

Теперь проблема в том, что скрипт повторяет «96/3931 = 0,02», мне нужно отобразить результат как «CurrentUsagePct = 0,02» или даже лучше, если я могу отобразить его как «« CurrentUsagePct = 2,44 ».

Если здесь уже есть командный файл, который делает то же самое, вам тоже понравится.

0
htan68 11 Мар 2014 в 03:49