首页 > 解决方案 > 批处理循环变量操作

问题描述

我必须构建一个 .bat 文件来操作特定的 .csv 文件有一个小问题。我希望 .bat 读取文件的行,然后检查该行的前三个字母。最后应该有 n 个文件,其中文件 xxx.csv 包含 input.csv 的行,其中 xxx 作为行的前三个字母。

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

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

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

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

菲尔

标签: batch-filetrim

解决方案


子字符串替换仅适用于环境变量 ( %var%),但不适用于元变量 ( %%a)(正如 Mofi 已经评论的那样)。而且因为您在同一命令块中设置和使用变量,所以您需要延迟扩展

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

(有些方法没有延迟扩展,但它们使用call,这会减慢速度)


推荐阅读