通过windows命令行读取平面文件

通过windows命令行读取平面文件,windows,batch-file,command-line,Windows,Batch File,Command Line,我有下面的平面文件 ETL details for the last run: ETL Process Id : 23396187 ETL Name : MY_WORKFLOW Run Name : MY_WORKFLOW: ETL Run - 2014-06-26 ..... 我正在使用下面的代码来阅读它 如果我运行下面的 findstr /n . D:\MR\BOK\automation\test2.txt | findstr"4:ETL Name:": 输出为4:

我有下面的平面文件

ETL details for the last run:

ETL Process Id : 23396187
ETL Name : MY_WORKFLOW
Run Name : MY_WORKFLOW: ETL Run - 2014-06-26 .....
我正在使用下面的代码来阅读它

如果我运行下面的

findstr /n . D:\MR\BOK\automation\test2.txt | findstr"4:ETL Name:":
输出为4:ETL名称:MY_工作流

但当我将它设置为变量和echo时,它并没有给我任何东西

设置eplan=findstr/n。D:\MR\BOK\automation\test2.txt | findstr4:ETL名称:

回显%eplan%刚刚给出 %埃普兰%

我不熟悉windows命令行,如果我做错了什么,请纠正我。我的最终目标是将其存储在变量中。谢谢

for /f "delims=" %%a in (`findstr /n . D:\MR\BOK\automation\test2.txt ^| findstr "4:ETL Name:" `) do set "eplan=%%a"
未经测试

应正确设置eplan或至少设置为指定的字符串

for/f循环中的单个带引号的字符串作为命令执行,for接收输出。delims=子句关闭默认分隔符集。行文本应用于元变量%%a。管道前的插入符号^告诉批处理该管道是要执行的引用命令的一部分,而不是for的一部分

set var=value语法确保某些编辑器在赋值后留下的行上的任何尾随空格不包括在指定的值中