在命令行中读取和写入文件

时间:2017-10-18 08:49:47

标签: batch-file cmd

我试图从一个用六个行块写的txt文件中读取。

SERVICE_NAME: 11178688
DISPLAY_NAME: 11178688
        TYPE               : 10  WIN32_OWN_PROCESS  
        STATE              : 1  STOPPED 
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

SERVICE_NAME: 11572138
DISPLAY_NAME: 11572138
        TYPE               : 10  WIN32_OWN_PROCESS  
        STATE              : 1  STOPPED 
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

有没有办法可以使用cmd扫描这些文件并读取每个块的第一行,从中获取整数并将其写入新文件?

1 个答案:

答案 0 :(得分:0)

你可以,虽然我建议一旦事情变得更复杂,你应该切换到另一种语言。例如,PowerShell在文本解析方面非常强大,尽管它具有基于对象的特性。

我假设你想要SERVICE_NAME部分,如果没有,只需调整下面的相关字符串。

首先,我们将输入减少到只需要的行:

findstr SERVICE_NAME < foo.txt

然后我们迭代这些,并保留数字:

setlocal enabledelayedexpansion
for /f "tokens=2" %%A in ('findstr SERVICE_NAME ^< foo.txt') do (
  set "Number=%%A"
  echo Integer: !Number!
)

要将其写入新文件,只需重定向输出:

@echo off
(for /f "tokens=2" %%A in ('findstr SERVICE_NAME ^< foo.txt') do (
  echo %%A
)) > bar.txt