我试图从包含空格的文本文件中提取一串数据。

时间:2014-04-16 13:05:47

标签: batch-file

这是我的代码:

FOR /F "delims=" %%1 IN (COAFN1T_N1E827682.BST) DO (
SET TempRecord=%%1
echo %TempRecord%
SET Strat=%TempRecord:~254,8%
SET VCNum=%TempRecord:~263,4%
goto EndWHile
)

:EndWhile

这是我运行时的样子。你可以看到我回复TempRecord时它是空白的。

Z:\CLIENTS\COAF\NewUsed\BIN\BAT\test>(
SET TempRecord=201404   xxxxxxxx               xxxxxx               xxxx xxxxxxx
Rd.                                              xxxxx                TX xxxxx  
 xxx_x_V7   xxx_V2     N1E_V1     NUB_C_V8              2.39
              05/24/2014 4102014  VC01 03/31/2014
 echo
 SET Strat=~254,8
 SET VCNum=~263,4
 goto EndWHile
)

ECHO已开启。

1 个答案:

答案 0 :(得分:1)

在块语句(a parenthesised series of statements)中,解析整个块并执行然后。块中的任何%var%将在解析块时被该变量的值替换 - 在块执行之前 - 同样的事情适用于{{1 }}

因此,FOR ... DO (block)将在遇到IF (something) else (somethingelse)时使用%variables%的值执行。

解决此问题的两种常见方法是1)使用IF并使用setlocal enabledelayedexpansion代替!var!来访问已更改的%var%或2}值以进行调用一个子程序,用于使用更改的值执行进一步处理。

%n,其中n是var0是指提供给过程的参数号(例如,来自命令行)您必须使用a..z或A..Z对于循环控制变量(也有一些其他字符,但只记录字母) - 这是CaSe-SeNsItIvE,

这样:

9

应该适合你 - 我还没有测试过它。