批处理循环变量操作

时间:2020-04-02 11:42:33

标签: batch-file trim

我需要构建一个.bat文件来处理一个特定的.csv,这是一个小问题。 我希望.bat读取文件的行,然后检查该行的前三个字母。最后应该有n个文件,其中文件xxx.csv包含input.csv的行,其中xxx是该行的前三个字母。

首先,我什至不知道是否有可能在批处理文件中完成此工作,因为该文件有> 85000行,甚至可能更大。因此,如果不可能的话,您可以直接告诉我。

for /f "delims=" %%a in (input.CSV) DO (
echo %%~a:~0,3
pause
)

我要“输出” %% a的前三个字母。

如果您能帮助我,那就太好了。

菲尔

1 个答案:

答案 0 :(得分:0)

子字符串替换仅适用于环境变量(%var%),而不适用于元变量(%%a)(如Mofi早已提到的那样)。并且由于您是在同一命令块中设置和使用变量,因此需要delayed expansion

setlocal enabledelayedexpansion
for /f "delims=" %%a in (input.CSV) DO (
  set "var=%%~a"
  echo !var:~0,3!
  pause
)

(有些方法没有延迟扩展,但是它们使用call,这会使事情变慢)