bat文件循环、字符串

windows 下用 .bat 文件控制程序编译、对不同输入输出文件运行。

@echo off
setlocal enabledelayedexpansion

cls

diff main.cpp test/main.cpp > log/diff.txt

g++ -O3 main.xfsh.cpp -o test -lpthread

REM main.exe test_data.txt log/out.test_data.txt
REM python check.py -a result.txt -b log/out.test_data.txt

for %%F in (dataset/data.*k.txt) do (
    echo --- %%F ---
    set "file=%%F"
    set "out_f=log/out.!file:~5!"
    REM echo output file: !out_f!
    test.exe dataset/%%F !out_f!
    REM python check.py -a !out_f! -b
)

这里用 for 遍历了 dataset/ 下所有文件名形如 data.*k.data 的文件;file 用来装循环变量的值 %%F(作为字符串);out_f 截取 file 中从第 5 个字符开始的后面的字符,并拼上 log/out. 的前缀,作为输出文件的路径。
其中:

  • @echo off 防止每条命令在执行时输出到命令窗口(回显)
  • setlocal enabledelayedexpansion 用延迟变量时用到,循环中 !xxx! 的那些
  • 延迟变量用 !x! 引用,循环变量用 %%y,普通变量用 %z%
  • REM 注释,也可以用 ::

References

  1. BAT 遍历文件夹和子文件夹下所有文件
  2. dos下遍历目录和文件的代码(主要利用for命令)
  3. BAT批处理中的字符串处理详解(字符串截取)
  4. windows bat脚本for循环中对变量循环赋值
  5. 批处理中如何截取FOR循环变量的字符串
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值