早上好,大师们在那里。 我有一个名为ABC.txt的文件,其中有一些行:
001 09.10.2017 A "\\server\a.txt"
...
...
030 10.10.2017 D "\\server\b.txt"
每个都有4个由TAB分隔的值。
是否可以批量阅读此文件的最新行 创建4个变量并分配在该行中读取的值?
即
a=030
b=10.10.2017
c=D
e="\\server\b.txt"
我正在尝试for / f但是我无法达到目标。 提前谢谢
答案 0 :(得分:2)
for loop
将为每一行分配所有变量,覆盖最后一个,直到它到达文件末尾。当它这样做时,变量将仅包含从最后一行检索的数据。
别担心,它可能看起来效率低下,但会很快完成。
@Echo Off
If Not Exist "ABC.txt" Exit/B
For /F "UseBackQ Tokens=1-4 Delims= " %%A In ("ABC.txt") Do (
Set "_a=%%A"
Set "_b=%%B"
Set "_c=%%C"
Set "_d=%%D"
)
Echo %%_a%% = %_a%
Echo %%_b%% = %_b%
Echo %%_c%% = %_c%
Echo %%_d%% = %_d%
Pause
其中“UseBackQ Tokens = 1-4 Delims = TAB ”
修改强>
根据Benham先生的评论;因为For
循环中的默认分隔符是 Space 和 Tab ,并且您的示例数据不指示任何空格,您可以使用以下内容,错过了Delims
声明,而不是:
@Echo Off
If Not Exist "ABC.txt" Exit/B
For /F "UseBackQ Tokens=1-3*" %%A In ("ABC.txt") Do (
Set "_a=%%A"
Set "_b=%%B"
Set "_c=%%C"
Set "_d=%%D"
)
Echo %%_a%% = %_a%
Echo %%_b%% = %_b%
Echo %%_c%% = %_c%
Echo %%_d%% = %_d%
Pause
其中%%D
将是除第三个分隔符之外的其余行的值。