2012-01-23 4 views
0

Мне было интересно, можно ли использовать findstr и/или gawk, чтобы возвращать выходные данные cmd именно так, как мне это нужно. В настоящее время я возвращаю вывод raw, а затем удаляю пустые строки и разбираю то, что мне нужно. Как научная вещь, я надеялся, что смогу понять, как это можно сделать лучше.Windows cmd - findstr и gawk или как бы вы вытащили данные ниже

Необработанные выход:

Change 2086888 on 2012/01/23 by [email protected] 

     [email protected] 

Change 2086888 on 2012/01/23 by [email protected] 

     [email protected] 

Change 2078677 on 2012/01/20 by [email protected] 

     [email protected] 

Я беру этот вывод и разобрать его на это с PHP:

1. 2086888,[email protected] 
2. 2086888,[email protected] 
3. 2078677,[email protected] 

Чтобы сделать его немного легче на себя, я удалить пустые строки из выход путем его подключения к findstr и использования/V "^ $". Итак, это | findstr/V "^ $".

Как я могу получить вывод, который я обрабатываю php непосредственно из командной строки?

ответ

1

for команды в cmd.exe пропускает пустые строки, так что может быть проще разобрать его таким образом:

@Echo Off 
setlocal enabledelayedexpansion 
set linenum=1 
for /f "tokens=1,2" %%A in (output.txt) do @(
    if %%A==Change set result=%%B 
    if not %%A==Change (
    echo !linenum!. !result!,%%A 
    set /a linenum=!linenum!+1 
) 
) 
endlocal 
+0

это очень хорошо и работает. я надеялся, что будет способ сделать это без участия, но я думаю, что это единственный способ. благодаря – user797963