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
注释,也可以用::