Reputation: 8292
Using below command in a batch file, i am getting output but along with some echoes as carriage return.
wmic process where Caption='notepad.exe' get ProcessId,WorkingSetSize /Format:Texttable > output.txt
output:
ProcessId WorkingSetSize
4016 6356992
1548 6189056
how to get rid of this carriage return in output ?
EDIT1:
Referring Foxdrive's working answer in my linked question I tried below and its working nice, but in the output there coming an extra line: ECHO is off. don't know why ?
@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
output.txt:
ProcessId WorkingSetSize
4768 6365184
5608 5500928
2888 6037504
1052 5472256
ECHO is off.
EDIT2:
ProcessId WorkingSetSize
4768 6365184
5608 5500928
2888 6037504
1052 5472256
I want output in above format only and getting that output using:
@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
Is there any trailing CR in output now ? hexdump command is not working in my system..:(..will appreciate your confirmation..:)
Upvotes: 1
Views: 6556
Reputation: 37569
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
Upvotes: 1
Reputation: 41234
This removes the trailing CR and provides the values separated by a space:
@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
The file is in this format:
624 4923392
9220 4886528
This removes the trailing CR and provides the values in CSV format
@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
This is the format the file is in:
PCNAME,956,4960256
PCNAME,4004,4870144
Upvotes: 1
Reputation: 70923
I've got no extra CR or aditional echos running your code. But since you are getting them, Endoro answer is close enough. Instead of trying to filter not desired lines, try to get only the lines you are interested in
wmic ..... ^| findstr /B /R "[0-9P]"
Only the lines beginning with a number (data) or a P (ProcessId)
Upvotes: 0