将文本文件的特定行的特定字符串分配给变量

问题描述:

我有一个文本文件,我知道该文件的第16行将以_____Dest : xxx开头,其中下划线(5)都是空格,xxx不是已知字符长度并可能包含空格。我想将xxx分配给批处理文件中的变量。我想这里的代码将包含一个for /f "skip=15 delims="和一个find "Dest : ",但我不确定如何去做。将文本文件的特定行的特定字符串分配给变量

如果有帮助,我知道xxx将是一个以\\开头的路径,并且我想将\\包含在变量中。

下面是该文件的节选:

******************************************************************************* 
*                    * 
* This is the robocopy log section.           * 
*                    * 
******************************************************************************* 



------------------------------------------------------------------------------- 
    ROBOCOPY  ::  Robust File Copy for Windows        
------------------------------------------------------------------------------- 

    Started : Fri Dec 09 20:28:08 2016 

    Source : \\server\path... 
    Dest : \\server\path... 

    Files : *.* 

    Options : *.* /TEE /S /E /COPY:DAT /MT:128 /R:1 /W:1 

etc. 
etc. 

我想Dest :后分配第16行的一切变量

+0

当我尝试你的建议时,我用有问题的文件的路径和名称替换'your_filename',当我尝试echo%content%时,我简单地得到'Echo is off'。 –

下面是如何我做一个简单的例子:

这种方法意味着不需要跳过/计数行,只能选择robocopy目标是服务器路径的行(按照您的规范)。

For /F "Tokens=1*Delims=\" %%A In ('Find "Dest : \\" ^<"file.ext"') Do Set "VAR=\\%%B" 

哪里file.ext是您ROBOCOPY输出日志。

+0

这工作完美。谢谢! –

for /f "skip=15tokens=1*delims=: " %%a in (filename) do set "var=%%b"&goto done 
:done 

如果你需要“引用”包含分离器,如果你使用带引号的文件名,那么你还需要包括skipusebackq解析选项的文件名。