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

Linux Shell中`{} +`语法对应的Windows批处理等效实现方法

解决方案

你可以先把所有匹配到的.o文件路径拼接为一个变量,再一次性传入rgblink执行,实现和Linux下find -exec {} +完全一致的效果,完整批处理代码如下:

@echo off
setlocal enabledelayedexpansion

:: 初始化存储.o文件路径的变量
set "OBJ_FILES="

:: 递归遍历bin-int目录下所有.o文件,拼接路径到变量
for /r ".\bin-int" %%i in (*.o) do (
    set "OBJ_FILES=!OBJ_FILES! "%%i""
)

:: 一次性执行链接命令,所有.o文件会作为整体传入
rgblink -o ./bin/lapis.gb -n ./bin-int/symbols.sym !OBJ_FILES!

endlocal

关键说明

  • 必须开启enabledelayedexpansion延迟变量扩展:批处理默认会在代码块执行前预解析所有变量,不开延迟扩展会导致循环内拼接的变量无法实时更新,最终只能拿到最后一个文件路径
  • 每个路径外层包裹双引号:避免路径包含空格、特殊符号时命令执行出错
  • 如果是直接在CMD窗口手动执行而非写.bat脚本,需要把代码里的%%i替换为%i
  • 单条CMD命令默认有8191字符的长度限制,如果你的项目.o文件数量极多超出该限制,可以先把所有.o路径写入临时文本文件,再通过rgblink支持的参数文件读取方式调用即可。

内容的提问来源于stack exchange,提问作者Type Definition

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 02:15:08