Batch file 从文本文件中选择一行并将其设置为变量

Batch file 从文本文件中选择一行并将其设置为变量,batch-file,wmic,Batch File,Wmic,我真的不知道如何将以下文本文件中的结果转换为批处理文件中的变量 首先,我需要运行WMIC生产线 wmic PAGEFILE get AllocatedBaseSize /Value > test.txt test.txt的结果占据了6行,只有第三行有字符,这是我需要设置为变量的一行 test.txt的内容 AllocatedBaseSize=16328 另一种剥猫皮的方法(不创建文件): 或者在这种情况下更容易: for /f %i in ('wmic PAGEFILE get All

我真的不知道如何将以下文本文件中的结果转换为批处理文件中的变量

首先,我需要运行WMIC生产线

wmic PAGEFILE get AllocatedBaseSize /Value > test.txt
test.txt的结果占据了6行,只有第三行有字符,这是我需要设置为变量的一行

test.txt的内容

AllocatedBaseSize=16328
另一种剥猫皮的方法(不创建文件):

或者在这种情况下更容易:

for /f %i in ('wmic PAGEFILE get AllocatedBaseSize ^|findstr "[0-9]"') do set as=%i

要将所需行放入文件中,请执行以下操作:

wmic PAGEFILE get AllocatedBaseSize /Value | FINDSTR "Allocated" > test.txt
要将文件内容放入变量中,请执行以下操作:

set /p Base=<test.txt  

set/p Base=这将直接设置变量,而无需中间文件

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

echo %AllocatedBaseSize%

用于
循环的双
用于从WMIC中删除额外的CR(0x0D)字符和输出行的结尾

不确定是否最好将其作为新主题发布。 现在我几乎完成了批处理脚本,因为现在我正在一台目标主机上进行测试。批处理文件与分区有问题,并从中找到此好脚本。我几乎不了解它是如何工作的,但不知道如何更改最后一次回显“echo%o%”的最终结果

例如:

  • AllocatedBaseSize=3931
  • 当前使用率=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”,则效果更好


如果这里已经有一个批处理文件可以做同样的事情,我也会喜欢使用。

wow,看起来创建批处理文件对你们来说非常简单。可能需要一些调整,我再次在%b前得到了…AllocatedBaseSize=bAdd第二个%b。我得到了Base=AllocatedBaseSize=16328。我期望的变量应该只有AllocatedBaseSize=16328是的-你应该问一个新问题,因为这个最新的问题与标题中的
选一行…
问题无关。我的意思是,提出一个新问题并不是真的要花费任何代价,是吗?
for /f "tokens=*" %%a in (
    'wmic PAGEFILE get AllocatedBaseSize /value^|find "="'
) do for %%b in (%%a) do set "AllocatedBaseSize=%%b"

echo %AllocatedBaseSize%
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