从CMD中的变量中删除逗号

Remove comma from variable in CMD

你们都好吗?

我制作了一个批处理文件,用于获取具有特定 PID 的进程的内存使用情况... 这是代码:

@Echo off

REM Get memory from process using tasklist
for /f "tokens=2 delims=," %A in ('tasklist /svc /fi "SERVICES eq .Service02" /FO csv /NH') do ( 
    REM Store PID on a variable
    @Set "pidSlv02=%~A"
    REM Get memory usage from process with that PID
    for /f "tokens=5 delims= " %B in ('tasklist /fi "pid eq %pidSlv02%" /NH') do (
    REM Store mem value on another variable
    @Set "memSlv02=%~B"
    REM Remove commas from variable
    @Echo %memSlv02% K
    )
)

所以,输出是:

1,407,356

现在,我需要将该数字转换为 1407356

我不是直接过来的。我已经尝试了几件事但没有成功。 我仍然很新,正在学习 CMD/batch 脚本...甚至不知道可以在 Windows 上做这么多。认为只有在 Linux 上才有可能。所以如果我不明白什么,请不要生我的气。我尽力了!

此外,如果我在这里拼写错误,请见谅,因为这不是我的母语。

我尝试添加代码:

set memSlv02=!memSlv02:,=!
set /a total=!total! + !memSlv02!

但是如果我使用 echo %total% 我会收到 Missing operator。 0

有什么建议吗?

这是一个示例,它应该使用您认为最适合您的命令输出您需要的数据!

@Echo Off & SetLocal EnableExtensions DisableDelayedExpansion
Set "SvcName=.Service02"
For /F Tokens^=3^ Delims^=^" %%G In ('%SystemRoot%\System32\tasklist.exe
 /Fi "Services Eq %SvcName%" /Fo CSV /NH /Svc 2^>NUL') Do Set "PID=%%G"^
 & For /F Tokens^=9^ Delims^=^" %%H In ('%SystemRoot%\System32\tasklist.exe
 /Fi "PID Eq %%G" /Fo CSV /NH 2^>NUL') Do Set "MemKB=%%H"^
 & SetLocal EnableDelayedExpansion & For /F %%I In ("!MemKB:,=!") Do EndLocal^
 & Set "MemKB=%%I"
Echo %%SvcName%% = %SvcName%, %%PID%% = %PID%, %%MemKB%% = %MemKB% & Pause

您显然会替换我包含的最后一行,只是为了向您展示已定义的变量。如果您愿意,我已经简化了仅替换第二行的服务名称的过程,但根本不应修改任何其他内容。

顺便说一句,我不会解释上面的任何一个是如何工作的,所以如果你觉得有必要了解它,我建议你进行进一步的研究,但目前还不能这样做。