读取txt文件并分配变量符号批处理

时间:2017-10-09 11:44:34

标签: batch-file

早上好,大师们在那里。 我有一个名为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但是我无法达到目标。 提前谢谢

1 个答案:

答案 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将是除第三个分隔符之外的其余行的值。