首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >批处理文件启动应用程序并传递多个参数将空格切换到

批处理文件启动应用程序并传递多个参数将空格切换到
EN

Stack Overflow用户
提问于 2019-08-15 01:46:33
回答 1查看 102关注 0票数 2

我创建了一个接受命令行参数的c# wpf应用程序。如果我打开cmd并使用多个参数调用该应用程序,则这些参数被正确传入。

但是如果我做同样的事情,但是从一个批处理文件中,它将参数作为一个组合在一起的参数传递,而不是多个参数。我让应用程序输出参数,看起来所有的空格(分隔每个命令行参数的空格)都变成了奇怪的á字符。为了正确传递参数,我需要做些什么吗?

我已经尝试用ASCII编码重新保存文件,但这并没有改变任何东西。我还尝试将此行添加到批处理文件中

代码语言:javascript
运行
复制
chcp 1253>NUL

这改变了它,所以á不在那里,但它仍然有它是一个参数。看起来这些空间并没有被当做一个空间来传递。

下面是我的批处理文件行的样子,每个参数都用空格分隔。

代码语言:javascript
运行
复制
start /wait C:\MyTestApp.exe /SILENT /BOOLAGREEMENT=TRUE /BOOLGAOPTIN=TRUE

--UPDATE--添加重现步骤...

这只是类似于我刚才所做的压缩的泛型代码

创建c# wpf应用程序。

在App.xaml.cs中覆盖OnStartup

代码语言:javascript
运行
复制
protected override void OnStartup(StartupEventArgs e)
{
    base.OnStartup(e);
    this.ShutdownMode = System.Windows.ShutdownMode.OnMainWindowClose;
    bool shutdownapp = false;
    MessageBox.Show(string.Join(",", e.Args));
}

构建exe。

现在启动cmd和cd到exe所在的位置。

代码语言:javascript
运行
复制
 MyTestApp.exe /param1=test1 /param2=test2

您应该会看到一个消息框,上面写着

/param1=test1,param2=test2

现在创建一个批处理文件,其内容类似于this...then run it

test.bat

代码语言:javascript
运行
复制
@echo off
start /wait c:\MyTestApp.exe /param1=test1 /param2=test2

这一次,消息框应该有这样的内容.../param1=test1/param2=test2

EN

回答 1

Stack Overflow用户

发布于 2019-08-15 02:33:26

Start将所有这一切视为启动的CMD。

有没有真正需要使用start的原因?通常情况下,没有,您可以直接调用可执行文件。

例如TestMyApp.cmd

代码语言:javascript
运行
复制
@(
  SETLOCAL
  ECHO OFF
)

REM Call your Command here with all arguments:
"C:\MyTestApp.exe" /SILENT /BOOLAGREEMENT=TRUE /BOOLGAOPTIN=TRUE

如果您真诚地要求开始。

然后您应该意识到,它将所有命令视为单个字符串,这就是您遇到的情况,因此在这种情况下,您应该显式调用一个新的CMD实例:

代码语言:javascript
运行
复制
START "" /WAIT CMD /C ""C:\MyTestApp.exe" /SILENT /BOOLAGREEMENT=TRUE /BOOLGAOPTIN=TRUE"

但如果不需要的话,这会有很多额外的工作要做。

或者,您也可以直接运行CMD实例:

代码语言:javascript
运行
复制
 CMD /C ""C:\MyTestApp.exe" /SILENT /BOOLAGREEMENT=TRUE /BOOLGAOPTIN=TRUE"

或者使用CALL:

调用"C:\MyTestApp.exe“/SILENT /BOOLAGREEMENT=TRUE /BOOLGAOPTIN=TRUE

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57499670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档