我需要用批处理代码解析文件。我在文件中有两条信息。
这些文件将在单独的行中写入文件。
在我的批处理脚本中,我需要读取文件并将两行放入两个不同的变量(src_dir,tgt_dir)。如果标签或间距更好,我可以毫无问题地更改分隔符。
我正在阅读使用for /f etc
,但我不明白它是如何运作的。
谢谢你的指点。
答案 0 :(得分:3)
在这种情况下,FOR / F不是最佳选择。我会按如下方式解决问题:
<"yourFile.txt" (
set /p "src_dir="
set /p "tgt_dir="
)
:: Show result
echo src_dir=%src_dir%
echo tgt_dir=%tgt_dir%
如果值之间有空行,则必须为每个空行添加一个额外的set /p =
,以便跳过它。
此方法和MC ND解决方案的一个缺点是值必须按特定顺序排列。如果您可以控制数据文件的创建,那么您可以创建一个更简单,更强大的解决方案。
使用varname=
简单地优先考虑每个值。例如,您的数据文件代码类似于
src_dir=path1
tgt_dir=path2
然后,您可以使用以下非常简单的脚本来读取值。如果添加其他变量,则不必更改脚本。
for /f "usebackq delims=" %%A in ("pathSpecForYourDataFile") do set "%%A"
答案 1 :(得分:1)
set "src_dir="
set "tgt_dir="
for /f "tokens=* usebackq" %%a in ("c:\somewhere\myfile.txt") do (
if not defined src_dir (
set "src_dir=%%~a"
) else if not defined tgt_dir (
set "tgt_dir=%%~a"
)
)
echo %src_dir%
echo %tgt_dir%
在for
中,/f
表示将处理文件内容或命令输出。
tokens=*
向for
命令指示不应该在该行上进行拆分。
usebackq
向for
命令指示反引号字符串是要执行的命令,引用的字符串是要读取的文件。
对于每行readed,执行括号中的代码,确定两个变量中的哪一个应该接收readed值。
答案 2 :(得分:-1)
您需要做的是解析批处理代码,并将它们读入您的2个变量