从 Powershell 调用带有很长的可变参数列表的程序?

2024-01-06

我目前正在尝试将一系列批处理文件转换为 powershell 脚本。我想递归地为目录中存在的源文件运行编译器。编译器需要一长串参数。问题是,我希望参数是可变的,这样我就可以根据需要更改它们。这是批处理文件中的典型调用(为了可读性和长度而进行了简化):

“C:\PICC 编译器\picc18.exe”--pass1 “C:\Src 文件\somefile.c” “-IC:\包含文件” “-IC:\标头 文件”-P --runtime=default,+clear,+init,-keep,+download,+stackwarn,-config,+clib,-plib --opt=default,+asm,-speed,+space,9 --warn=0 --debugger=realice -Blarge --double=24 --cp=16 -g --asmlist "--errformat=错误 [ %n] %f;%l.%c %s" "--msgformat=咨询[%n] %s" --OBJDIR="C:\Built Files" “--warnformat=警告 [%n] %f; %l.%c %s”

当包含在批处理文件中时,此命令执行得很好,但当我将该命令复制并粘贴到 powershell 中时,我开始收到错误。这只是我使用 powershell 的第二天,但我过去曾使用 .NET 进行开发。我已经设法拼凑出以下尝试:

$srcFiles = Get-ChildItem . -Recurse -Include "*.c"
    $srcFiles | % {
    $argList = "--pass1 " + $_.FullName;
    $argList += "-IC:\Include Files -IC:\Header Files -P --runtime=default,+clear,+init,-keep,+download,+stackwarn,-config,+clib,-plib --opt=default,+asm,-speed,+space,9 --warn=0 --debugger=realice -Blarge --double=24 --cp=16 -g --asmlist '--errformat=Error   [%n] %f; %l.%c %s' '--msgformat=Advisory[%n] %s' '--warnformat=Warning [%n] %f; %l.%c %s"
    $argList += "--OBJDIR=" + $_.DirectoryName;
    &"C:\PICC Compilers\picc18.exe" $argList }

我知道上面的代码可能有多个问题,即如何传递参数以及如何处理参数列表中的引号。尽管它是不正确的,但它应该说明我想要实现的目标。关于从哪里开始有什么建议吗?


从 PowerShell 调用命令行应用程序可能非常棘手。几周前@Jaykul 写了很棒的博文从 PowerShell 调用旧版/本机应用程序的问题 http://huddledmasses.org/the-problem-with-calling-legacy-or-native-apps-from-powershell/他描述了人们在这种情况下会遇到的问题。当然也有解决方案;)

编辑 - 正确的网址

该文章不再可用,因此只能通过 web.archive.org 查看 - 请参阅缓存的文章 http://web.archive.org/web/20110527182556/http://huddledmasses.org/the-problem-with-calling-legacy-or-native-apps-from-powershell/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Powershell 调用带有很长的可变参数列表的程序? 的相关文章

随机推荐

  • 不区分大小写 preg_replace_callback

    在下面的函数中 我想匹配关键字不区分大小写 应匹配 蓝色瑜伽垫 和 蓝色瑜伽垫 但是 目前仅当关键字大小写相同时才匹配 mykeyword 蓝色瑜伽垫 post gt post content preg replace callback b
  • 释放模式下不显示菜单

    我希望我为测试条目创建的菜单应该处于调试模式 但是当我发布 启动 我的应用程序时 不应为测试条目显示菜单 有人可以帮助我吗 检查IS DEBUG MODE在您的应用程序中标记并在其中添加代码 Use PackageManager得到一个Ap
  • 如何去掉不必要的括号?

    Same as this https stackoverflow com questions 10999835 regular expression to remove multiple parenthesis但是JavaScript 几个
  • 将外部 JavaScript(来自 CDN)捆绑到 React 组件中

    有哪些选项可以将外部 javascript sdk 捆绑到 React 组件中 我尝试在index html中包含javascript并通过window xyz引用它 它运行良好 但我无法进行生产构建 因为 javascript 不是以这种
  • C# 中的 JSON-RPC 客户端示例代码

    我需要一个简单的 C JSON RPC 1 0 客户端 最好使用 NET 2 0 或更高版本 我查看了 JRock 0 9 他们有几个示例 包括 Yahoo reader 但示例演示的是 JSON 而不是 JSON RPC 我知道我可以使用
  • 如何从 SQL 转换为 NoSQL/MapReduce?

    我有使用关系数据库的背景 但最近开始涉足 CouchDB 并对一些非关系操作 在 SQL 中很简单 在 CouchDB 中并不是一流函数感到惊讶 如果您花点时间将下面的每个 SQL 语句映射到其 MapReduce 等效项 我将不胜感激 S
  • x86 汇编等式 vs =

    我正在上一门 x86 汇编语言课程 它的进展速度相当快 本书一直在做一件事 但没有提及它是如何工作的 那就是在定义数据时使用 equ 和 运算符 所以看起来 equ 是用来定义常量的 但是 是一样的吗 如果我有一些代码 data count
  • 文件下载器中的基本访问身份验证问题

    我在从互联网下载应用程序中的二进制文件 zip 文件 时遇到问题 我必须使用基本访问身份验证来授权对文件的访问 但服务器响应始终是 HTTP 1 0 400 Bad request String authentication this lo
  • 如何调试 Node.js 服务器?调试器跳过我的断点! (使用VSCode)

    我正在尝试使用自定义服务器调试 Next js 应用程序 该服务器通常使用dev执行的 Yarn 脚本node server js VSCode 包含 Node js 调试扩展和本指南 https code visualstudio com
  • Chart.js 在画布上单击时获取最近的点

    单击画布上的任意位置时有没有办法获得最近的点 也许以某种方式收获核心 最近 方法 谢谢 我想你会发现getElementsAtXAxis很有帮助 基本上 getElementsAtXAxis有一个非常相似的行为getElementsAtEv
  • html 表单 - 摆脱问号和方程式

    这是我的代码 if request path employees
  • C# xml 文档

    目的是什么 xml随组件一起提供的文档文件 dll files 我知道如何构建一个 例如这里 http msdn microsoft com en us library aa288481 28VS 9 0 29 aspx 但是它们有什么用呢
  • 如何确定 Node.js 中导致 UnhandledPromiseRejectionWarning 的原因?

    我已经围绕 async await 库构建了我的 Node js 应用程序 并且它在大多数情况下都运行良好 我遇到的唯一麻烦是 每当未履行承诺时 我都会收到以下错误的一些变体 node 83333 UnhandledPromiseRejec
  • C#.Net 面板控制和 MDI 子表单 - 问题

    您好 我被困在带有面板控制的 MDIform 中 我有一个面板控件停靠 填充 到父 MDI 窗体 当我尝试使用菜单单击事件打开新的子窗体时 子窗体不会显示在 MDI 容器中 经过几次调试 我将面板控件的visible属性设置为false 现
  • 将 RCurl 与 SFTP 结合使用

    我正在尝试使用ftpUpload第一次在 RCurl 包中 我尝试访问的站点使用 sftp 协议 我已确保安装包含建立安全连接功能的 libcurl 版本 SFTP 被列为 RCurl 可用的协议之一 curlVersion protoco
  • Sed - 用充满奇怪字符的变量替换字符串

    我正在使用 sed 将文件中的字符替换为变量 该变量基本上是读取文件或网页的内容 其中包含多个类似散列的字符串 如下所示 这些字符串是随机生成的 define AUTH KEY CVo BO Qt1B GE h2 yU7h 5 wRV gt
  • 为什么与简单的 Rcpp 实现相比,zoo::rollmean 慢?

    zoo rollmean是一个有用的函数 它返回时间序列的滚动平均值 对于矢量x长度n和窗口大小k它返回向量c mean x 1 k mean x 2 k 1 mean x n k 1 n 我注意到我正在开发的一些代码似乎运行缓慢 因此我使
  • 如何修复 Android BLE SCAN_FAILED_APPLICATION_REGISTRATION_FAILED 错误?

    大多数时候它工作得很好 但有时我在尝试发现 BLE 设备时会遇到此错误 02 12 18 00 41 952 16178 16339 com icrealtime allie W BleRpcConnectionFactory Starti
  • 应用agones舰队时Kubectl错误:确保首先安装CRD

    我正在使用 minikube docker 驱动程序 和 kubectl 来测试 agones 舰队部署 运行时kubectl apply f lobby fleet yml 当我尝试应用任何其他 agones yaml 文件时 我收到以下
  • 从 Powershell 调用带有很长的可变参数列表的程序?

    我目前正在尝试将一系列批处理文件转换为 powershell 脚本 我想递归地为目录中存在的源文件运行编译器 编译器需要一长串参数 问题是 我希望参数是可变的 这样我就可以根据需要更改它们 这是批处理文件中的典型调用 为了可读性和长度而进行