You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批处理脚本:如何检查列含子串且另一列以指定串开头

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

核心筛选逻辑说明

  1. 判断字符串包含子串
    Batch没有直接的"包含"运算符,用字符串替换特性实现:!param1:*@gmail.com=!会把param1中从起始位置到第一个@gmail.com的内容替换为空。如果替换后的结果和原param1不同,说明原字符串包含目标子串。

  2. 判断字符串以指定内容开头
    用字符串截取语法!param10:~0,3!获取param10的前3个字符,直接与"100"做相等比较即可。

  3. 逻辑与(同时满足两个条件)
    把两个if语句连续写在一起,就等同于逻辑与(&&),只有两个条件都成立时才会执行后续的输出操作。

  4. 额外优化
    添加了type nul > output.csv,每次运行脚本前先清空输出文件,避免多次执行导致内容重复追加。

内容的提问来源于stack exchange,提问作者pebble unit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 17:18:24