【发布时间】:2020-04-02 11:42:33
【问题描述】:
我有一个 .bat 文件的小问题,我必须构建它来操作特定的 .csv。 我希望 .bat 读取文件的行,然后检查该行的前三个字母。最后应该有 n 个文件,其中文件 xxx.csv 包含 input.csv 的行,其中 xxx 作为行的前三个字母。
首先,我什至不知道是否可以在批处理文件中完成这项工作,因为该文件有 >85000 行,甚至可能会变得更大。所以如果不可能,你可以直接告诉我。
for /f "delims=" %%a in (input.CSV) DO (
echo %%~a:~0,3
pause
)
我想“输出” %%a 的前三个字母。
如果你能帮助我,那就太好了。
菲尔
【问题讨论】:
-
字符串替换只能用环境变量完成,不能用循环变量。打开command prompt,运行
set /?,并仔细阅读从第一页顶部到最后一页底部的输出帮助,尤其是关于字符串替换以及何时以及如何使用delayed expansion 的部分,在IF 上进行了解释 和 FOR 示例。另见:Variables are not behaving as expected -
我建议在命令提示符窗口中运行
for /?并仔细阅读从第一页顶部到最后一页底部的此命令的帮助。可能取决于已处理 CSV 文件的未知内容,使用for /F和适当的eol=、tokens=和delims=选项足以将您想要进一步使用的字符串分配给循环变量。另请参阅this long answer,这对您作为初学者编写 Windows 批处理文件非常有帮助。 -
如果你在操作 csv,你应该使用 powershell。蝙蝠可以做到,但它不适合这项工作,而且要困难 10 倍。你的问题也有点令人困惑。有什么办法可以澄清一下?
标签: batch-file trim