我想设置一个变量“directusepermission”作为txt文件的第一行。cmd - 获取txt内容的第一行
组/ P directusepermission = <%〜DP0 \ directuse.txt-一线
因此,我希望仅第一行。我该怎么做?
我想设置一个变量“directusepermission”作为txt文件的第一行。cmd - 获取txt内容的第一行
组/ P directusepermission = <%〜DP0 \ directuse.txt-一线
因此,我希望仅第一行。我该怎么做?
你有什么应该就够了。
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
如果你知道哪些内容是要行检索,文件可以被过滤,只获得所需的行。这将返回只有数行从开始到该行的结束,最后一行(请记住,它遍历返回线以上)将asigned给变量
for /f "tokens=*" %%f in ('findstr /r "^[0-9][0-9]*$" <"file"') do set "var=%%f"
for /f "delims=" %%a in (%~dp0\directuse.txt) do set directusepermission=%%a&goto done
:done
应该就足够了。
见http://stackoverflow.com/questions/1295068/windows-equiv-of-the-head-command的一些想法。在'nix中,一个人会使用'head'命令...该链接讨论cmd替代品 – Floris
重新阅读该问题。我希望得到第一行**变量**。 – user3186610
我认为获得第一条线是“让它变成一个变量”的第一步。你有没有看到http://stackoverflow.com/a/7827243/1967396? – Floris