我正在阅读文本文件%tmp%\ tmp.txt。我试图找到一个具有给定字符串的行(在此示例中为“RemotePath”),并将变量netdrive设置为该行(如果找到)。这是我的代码:
for /f "tokens=*" %%a in (%tmp%\tmp.txt) do echo.%%a|findstr /C:"RemotePath " >nul 2>&1 && set netdrive=%%a
它永远不会将netdrive设置为任何内容,但是当我将set netdrive=%%a
更改为echo %%a >> netdrive.txt
时,我想要的文本会出现在文本文件中。有什么想法吗?
答案 0 :(得分:0)
您似乎反复从输入文件为每个netdrive
设置token
,不 findstr
的输出。最后的赋值可能会从文件末尾给它一个空值。要从findstr
的输出中分配,请参见此处:How do I get the result of a command in a variable in windows?
答案 1 :(得分:0)
for /f "tokens=*" %%a in ('findstr /C:"RemotePath " "%tmp%\tmp.txt"') do set "netdrive=%%a"
"问题"使用原始代码是管道的每一侧都在一个单独的进程中执行,因此,在您的情况下,set
命令在另一个cmd
实例中运行,并且该变量在此单独的实例中设置,而不是在运行批处理文件的实例中。