1

在批处理文件中使用以下命令,我得到了输出,但还有一些回声作为回车。

wmic process where Caption='notepad.exe' get ProcessId,WorkingSetSize /Format:Texttable > output.txt

输出:

ProcessId  WorkingSetSize  
4016       6356992         
1548       6189056         

如何摆脱输出中的这个回车?

编辑1:

在我的链接问题中引用 Foxdrive 的工作答案,我在下面尝试过,它工作得很好,但在输出中出现了额外的一行:ECHO 已关闭。不知道为什么?

@echo off
setlocal enabledelayedexpansion
(For /F "tokens=1,* delims==" %%A in (' "wmic process where Caption='notepad.exe' get ProcessId,WorkingSetSize /Format:Texttable" ') do (
set "line=%%A %%B"
set "line=!line:~0,-1!"
echo !line!
))>output.txt

输出.txt:

ProcessId  WorkingSetSize  
4768       6365184         
5608       5500928         
2888       6037504         
1052       5472256         
ECHO is off.

编辑2:

ProcessId  WorkingSetSize  
    4768       6365184         
    5608       5500928         
    2888       6037504         
    1052       5472256  

我只想以上述格式输出并使用以下方式获取该输出:

@echo off
setlocal enabledelayedexpansion
(For /F "delims=" %%A in ('"wmic process where Caption='notepad.exe' get  ProcessId,WorkingSetSize /format:Texttable |findstr "[0-9P]" "') do (
set "line=%%A"
echo !line:~0,-1!
)) > output.txt

现在输出中有任何尾随 CR 吗?hexdump 命令在我的系统中不起作用..:(..感谢您的确认..:)

4

3 回答 3

1

try this:

wmic process where Caption='notepad.exe' get ProcessId,WorkingSetSize /Format:Texttable|findstr /v "^$">file.txt

output is (Windows 8) FAR FROM 'HORRIBLE':

C:\Users\Private\TEST>wmic process where Caption='notepad.exe' get ProcessId,WorkingSetSize /Format:Texttable|findstr /v "^$">file.txt

C:\Users\Private\TEST>type file.txt
ProcessId  WorkingSetSize
8896       8142848

C:\Users\Private\TEST>hexdump -C file.txt
00000000  50 72 6f 63 65 73 73 49  64 20 20 57 6f 72 6b 69  |ProcessId  Worki|
00000010  6e 67 53 65 74 53 69 7a  65 20 20 0d 0d 0a 38 38  |ngSetSize  ...88|
00000020  39 36 20 20 20 20 20 20  20 38 31 34 32 38 34 38  |96       8142848|
00000030  20 20 20 20 20 20 20 20  20 0d 0d 0a              |         ...|
0000003c

C:\Users\Private\TEST>for /f "tokens=*" %a in (file.txt) do @echo %a
ProcessId  WorkingSetSize
8896       8482816

C:\Users\Private\TEST>(for /f "tokens=*" %a in (file.txt) do @echo %a)|hexdump -C
00000000  50 72 6f 63 65 73 73 49  64 20 20 57 6f 72 6b 69  |ProcessId  Worki|
00000010  6e 67 53 65 74 53 69 7a  65 20 20 0d 20 0a 38 38  |ngSetSize  . .88|
00000020  39 36 20 20 20 20 20 20  20 38 34 38 32 38 31 36  |96       8482816|
00000030  20 20 20 20 20 20 20 20  20 0d 20 0a              |         . .|
0000003c

于 2013-10-20T08:19:14.203 回答
1

这将删除尾随 CR 并提供由空格分隔的值:

@echo off
setlocal enabledelayedexpansion
(For /F "tokens=2,3 delims=," %%a in ('"wmic process where Caption='notepad.exe' get ProcessId,WorkingSetSize /format:csv |findstr "[0-9]" "') do (
set "num=%%b"
echo %%a !num:~0,-1!
))>output.txt

该文件采用以下格式:

624 4923392
9220 4886528

这将删除尾随 CR 并以 CSV 格式提供值

@echo off
setlocal enabledelayedexpansion
(For /F "delims=" %%A in ('"wmic process where Caption='notepad.exe' get ProcessId,WorkingSetSize /format:csv |findstr "[0-9]" "') do (
set "line=%%A"
echo !line:~0,-1!
))>output.txt

这是文件的格式:

PCNAME,956,4960256
PCNAME,4004,4870144
于 2013-10-20T11:35:02.743 回答
0

我没有额外的 CR 或运行您的代码的附加回声。但既然你得到了它们,Endoro 的答案就足够接近了。与其尝试过滤不需要的行,不如尝试仅获取您感兴趣的行

wmic ..... ^| findstr /B /R "[0-9P]"

只有以数字(数据)或 P(ProcessId)开头的行

于 2013-10-20T11:00:44.307 回答