我想将变量“directusepermission”设置为txt文件的第一行。
set / p directusepermission =<%~dp0 \ directuse.txt-first-line
所以我只想要第一行。我怎么能这样做?
答案 0 :(得分:1)
你所拥有的应该是足够的。
set /p "var="<file
或
<file set /p "var="
会将file
中的第一行读入变量var
。
在您的代码中,问题可能是当前批处理文件的路径。如果它包含空格,则必须引用文件名。
set /p "directusepermission=" < "%~dp0\directuse.txt"
此外,以这种方式阅读变量时,您需要检查
您还可以使用for /f
命令迭代文件内容。在这种情况下,不存在的文件“问题”仍然存在,但如果它们为空或仅包含空格或制表符,则会忽略空行。
但是为了只得到第一行,你需要一些代码来确定只有第一行会被赋予变量。
这会迭代所有文件内容,但只将第一行分配给变量。对于单行或小文件,这是最简单的。 tokens=*
请求for
命令检索所有行,并且已包含useback
参数,以避免引用的文件名被视为要处理的字符串。
set "var="
for /f "tokens=* usebackq" %%f in ("file") do if not defined var set "var=%%f"
这只检索第一行文件,但是需要一个aditional标签,以跳转到for命令
for /f "tokens=* usebackq" %%f in ("file") do set "var=%%f" & goto endLoop
:endLoop
如果您知道要检索的行中有哪些内容,则可以过滤文件以仅获取所需的行。这将仅返回从行的开头到结尾的数字行,最后一行(记住它在返回的行上迭代)将被赋予变量
for /f "tokens=*" %%f in ('findstr /r "^[0-9][0-9]*$" <"file"') do set "var=%%f"
答案 1 :(得分:0)
for /f "delims=" %%a in (%~dp0\directuse.txt) do set directusepermission=%%a&goto done
:done
应该足够了。