Linux Shell 中的 ` +` 的 Windows 等效项是啥?

Posted

技术标签:

【中文标题】Linux Shell 中的 ` +` 的 Windows 等效项是啥?【英文标题】:What is the Windows equivalent of ` +` in Linux Shell?Linux Shell 中的 ` +` 的 Windows 等效项是什么? 【发布时间】:2021-08-07 13:16:51 【问题描述】:

我正在尝试制作一个简单的批处理文件来编译一些代码,但我终其一生都无法弄清楚或找到有关如何执行此操作的任何信息。

在 Linux 上,我正在这样做:

find ./bin-int/ -type f -name '*.o' -exec rgblink -o ./bin/lapis.gb -n ./bin-int/symbols.sym  +

这基本上找到了 ./bin-int/ 中所有扩展名为 .o 的文件,并将它们用作命令 rgblink 的输入变量。

但我终其一生都无法弄清楚如何在 Windows 上执行此操作。我得到的最接近的是

for /r ".\bin-int" %%i in (*.o); do rgblink -o ./bin/lapis.gb  -n ./bin-int/symbols.sym %%i

这是错误的,因为我不想为每个文件运行一次命令。我希望每个文件同时成为命令的输入。

我该怎么做?谢谢!

【问题讨论】:

批处理文件不使用数组,所以你需要做的是创建一个包含第一个文件名的变量,并继续使用 for 循环方法将每个新文件附加到它,直到它们都被迭代了。完成后,运行一个 rgblink 命令,将该多字符串变量作为最终参数传递。 没有“Linux shell”之类的东西,因为有许多在 Linux 上运行的 shell,如 bash、sh、zsh、csh、ksh、pwsh... @phuclv 我使用的是 Linux Mint 附带的任何东西,大多数 shell 都有类似的命令。但无论如何,这显然不是这个问题的重点。 我已经回滚了你的问题内容@TypeDefinition。请不要在问题本身中发布解决方案。 【参考方案1】:

您需要先将列表附加到变量中,然后在命令中运行该列表:

@for /r ".\bin-int" %%i in (*.o) do @call set "list=%%list%% %%i"
rgblink -o ./bin-int/lapis.gb  -n ./bin-int/symbols.sym%list%

这是未经测试的,因为我无法确认您的列表应该是什么样子,但您会明白的。

【讨论】:

以上是关于Linux Shell 中的 ` +` 的 Windows 等效项是啥?的主要内容,如果未能解决你的问题,请参考以下文章

怎么解决linux中的TXT在win7中的排序问题,linux中的换行在win7中不适用了。

Linux中的shell

Linux中的shell到底是什么

linux中的shell是啥意思?

linux中的bash shell的特性

linux中的命令在shell脚本中怎么写