batch-file - 批处理循环变量操作
问题描述
我必须构建一个 .bat 文件来操作特定的 .csv 文件有一个小问题。我希望 .bat 读取文件的行,然后检查该行的前三个字母。最后应该有 n 个文件,其中文件 xxx.csv 包含 input.csv 的行,其中 xxx 作为行的前三个字母。
首先,我什至不知道是否可以在批处理文件中完成这项工作,因为该文件有 >85000 行,甚至可能变得更大。因此,如果不可能,您可以直接告诉我。
for /f "delims=" %%a in (input.CSV) DO (
echo %%~a:~0,3
pause
)
我想“输出” %%a 的前三个字母。
如果你能帮助我,那就太好了。
菲尔
解决方案
子字符串替换仅适用于环境变量 ( %var%
),但不适用于元变量 ( %%a
)(正如 Mofi 已经评论的那样)。而且因为您在同一命令块中设置和使用变量,所以您需要延迟扩展:
setlocal enabledelayedexpansion
for /f "delims=" %%a in (input.CSV) DO (
set "var=%%~a"
echo !var:~0,3!
pause
)
(有些方法没有延迟扩展,但它们使用call
,这会减慢速度)
推荐阅读
- haskell - 如何为给定数据类型的 Show 编写更短的实例?
- android - 在 Dispatcher.Main 的上下文中执行网络任务
- php - 如何在 Symfony 中正确使用自定义类型?
- firebase - Flutter / Firebase在null上调用了getter'length'
- sql-server - SQL Server varchar(max) 无法正常工作
- wcf - 使用 WcfCoreMtomEncoder 记录响应 XML?
- ios - 在 Swift 中对来自 firestore 的数组进行分组
- python - NameError:名称“firstPart”未定义
- python - Web 抓取脚本在几个循环后崩溃
- angular - 括号中的 NativeScript 事件与否?