使用批处理文件从文件读取文本时发出问题

时间:2014-05-27 11:00:48

标签: windows file batch-file

我试图编写一个批处理文件,该文件将从文本文件中读取文本并设置为变量。

这是文本文件。

out.txt

C:\Program Files (x86)\Windows NT\text1.txt
C:\Program Files (x86)\Windows NT\text2.txt
C:\Program Files (x86)\Windows NT\text3.txt
   3 file(s) copied. 

我怀疑的是,我想将 C:\ Program Files(x86)\ Windows NT 设置为变量。我尝试使用以下命令来保存完整的文本文件。

FOR /f "delims=/" %%a IN (out.txt) DO echo %%a

任何人都可以告诉我如何从文本文件中读取特定的字符串。

提前致谢。

2 个答案:

答案 0 :(得分:2)

如果我理解正确,您希望获得out.txt中提到的文件的完整路径,但没有文件名。这可以使用parameter extensions完成,如下所示:

FOR /f "delims=" %%a IN (out.txt) DO ECHO %%~dpa

在您的示例中,它将输出

C:\Program Files (x86)\Windows NT\
C:\Program Files (x86)\Windows NT\
C:\Program Files (x86)\Windows NT\

更新:要仅保存第一行的结果,请使用以下命令:

@ECHO OFF
FOR /f "delims=" %%a IN (out.txt) DO (
    SET path_in_first_line=%%~dpa
    GOTO skip
)
:skip
ECHO %path_in_first_line%

答案 1 :(得分:0)

使用反斜杠作为分隔符拆分行

for /f "tokens=1-3 delims=\" %%a in (out.txt) do set "var=%%a\%%b\%%c"
echo %var%

询问行中元素的驱动器和路径

for /f "delims=" %%a in (out.txt) do set "var=%%~dpa"
echo %var%

当然,当for命令迭代文件中的所有行时,var变量将只保存从文件中最后一行检索的值。