bash - Windows 批处理脚本中 $() 的替换
问题描述
我正在尝试将我的 bash 脚本转换为 Windows 批处理文件。这是一个非常简单的单行程序,应该将文件的内容作为参数提供给script.exe
,并将结果发送到output.txt
.
这是有效的 bash 脚本:
./script.exe $(cat input.txt) > output.txt
我知道这可能是不好的风格,但它有效。问题是,我不知道如何$()
在 Windows 批处理文件中执行类似操作。当我使用它时,它将字符串"$(cat input.txt)"
作为参数发送,而不是运行命令。
解决方案
这种 bash 结构称为命令替换。这是@MichaelBurr 的一个很好的答案。
for /f
您可以使用带有以下命令的 cmd.exe 脚本获得类似的功能 :for /f "usebackq tokens=*" %%a in (`echo Test`) do my_command %%a
是的,这有点不明显(至少可以说),但它就是存在的。
看
for /?
血淋淋的细节。旁注:我认为
echo
在“”命令的反引号内使用“”for /f
需要使用“cmd.exe /c echo Test
”来完成,因为echo
它是 的内部命令cmd.exe
,但它以更自然的方式工作。Windows 批处理脚本总是以某种方式让我感到惊讶(但通常不是很好)。
另请参阅超级用户:Windows CLI 中是否有类似命令替换的内容?
推荐阅读
- angular - firebase signInWithPhoneNumber recaptcha 客户端已被删除 0
- sql - PostgreSQL - 如何选择组函数的每隔一行?
- c# - 将字符串转换为双精度的最佳方法是什么
- sql-server - 如何将运行的季度和年度平均列添加到 SQL Server 上的现有表
- c++ - 更新 Visual Studio 2017,现在出现编译错误 C7510:“回调”:使用依赖模板名称必须以“模板”为前缀
- javascript - 在反应中显示 JSON 时出错
- react-native - 使用 apollo-link-rest 发送纯文本请求正文
- python - 在一个绘图区域中绘制两个数据集(图表)
- c# - Mac 上的 .net 文件下载仅附加 .JPEG
- c# - 无法访问已处置的对象。对象名称:System.net.Sockets.Socket