批处理脚本:如何检查列含子串且另一列以指定串开头
Batch脚本:CSV指定列提取+自定义筛选逻辑
修改后可直接运行的代码
@echo off setlocal EnableDelayedExpansion echo "Your script is starting..." :: 预先清空输出文件,防止重复执行时内容叠加 type nul > output.csv FOR /F "skip=1 usebackq delims=" %%L in (sample.csv) DO ( set "line=%%L,,,,,,,," set "line=#!line:,=,#!" FOR /F "tokens=1,2,10,11 delims=," %%a in ("!line!") DO ( set "param1=%%a" set "param2=%%b" set "param10=%%c" set "param11=%%d" set "param1=!param1:~1!" set "param2=!param2:~1!" set "param10=!param10:~1!" set "param11=!param11:~1!" :: 筛选条件:param1含@gmai.com 且 param10以100开头 if not "!param1:*@gmail.com=!"=="!param1!" if "!param10:~0,3!"=="100" ( echo !param1!,!param2!,!param10!,!param11! >> output.csv ) ) ) echo "Your script has completed" endlocal
核心筛选逻辑说明
判断字符串包含子串
Batch没有直接的"包含"运算符,用字符串替换特性实现:!param1:*@gmail.com=!会把param1中从起始位置到第一个@gmail.com的内容替换为空。如果替换后的结果和原param1不同,说明原字符串包含目标子串。判断字符串以指定内容开头
用字符串截取语法!param10:~0,3!获取param10的前3个字符,直接与"100"做相等比较即可。逻辑与(同时满足两个条件)
把两个if语句连续写在一起,就等同于逻辑与(&&),只有两个条件都成立时才会执行后续的输出操作。额外优化
添加了type nul > output.csv,每次运行脚本前先清空输出文件,避免多次执行导致内容重复追加。
内容的提问来源于stack exchange,提问作者pebble unit
相关产品推荐
相关产品推荐

