将文本文件的特定行的特定字符串分配给变量
问题描述:
我有一个文本文件,我知道该文件的第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行的一切变量
答
下面是如何我做一个简单的例子:
这种方法意味着不需要跳过/计数行,只能选择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
如果你需要“引用”包含分离器,如果你使用带引号的文件名,那么你还需要包括skip
前usebackq
解析选项的文件名。
当我尝试你的建议时,我用有问题的文件的路径和名称替换'your_filename',当我尝试echo%content%时,我简单地得到'Echo is off'。 –