【问题标题】:Solutiousing system function to run bat file with arg from vc++解决系统函数以从 vc++ 运行带有 arg 的 bat 文件
【发布时间】:2015-02-03 04:18:54
【问题描述】:

我是visual c++ 的新手,我正在练习开发非常简单的应用程序。

我还在学习,请指导我。

我正在尝试使用 Visual c++ 运行 batch file,并且需要在其后添加 arg

String ^ arg = textBox1->Text;

system("file.bat"); // how can I add my arg here?

arg 取决于用户从文本框中输入的内容。

提前非常感谢您...

解决方案:

字符串 ^ arg = textBox1->文本; Process::Start("C:\file.bat", arg);

【问题讨论】:

  • String ^ 是一个 C++ .NET 习惯用法(托管字符串),您是否在 C++ 中使用 .NET 平台,如果是,您可以使用 Process.Start:msdn.microsoft.com/en-us/library/… .. 吗?
  • Process::Start("file.bat", arg);不工作
  • 您遇到了什么错误? “不起作用”怎么办?它是否在批处理文件中,即批处理文件没有从arg 变量中接收到正确的参数,或者根本没有运行?确保当您执行Process::Start("file.bat", arg); 时,您的可执行文件可以找到"file.bat"..
  • 正在找到批处理文件,因为我可以看到它正在运行。这个批处理文件将打开一个小的 java 程序。该程序没有输出,因为执行批处理文件时没有 arg。
  • 您正在使用 .NET String^,它是一种托管类型,并希望在 system 命令中将其用作 char*,为此您需要对其进行编组从 .NET 类型到非托管类型(这里有一个参考:stackoverflow.com/questions/13665649/… ..)。另外,Process::Start 不起作用,你说“没有 arg”,但具体是什么意思(arg 变量里面什么都没有?它没有传递给file.bat)?

标签: c++ function batch-file system


【解决方案1】:

我试过这个:

#include <iostream>
#include <iostream>
using namespace std;

int main()
{
    string str = "*.txt";
    system((string("dir ") + str).c_str());
    return 0;
}

这行得通

【讨论】:

  • 对不起我的愚蠢,但我不知道如何在我的可视化 c++ windows 窗体上实现你的代码:(
  • 带系统函数的字符串显示字符串转换操作。其他都不重要
【解决方案2】:

我认为system("file.bat " + arg) 会起作用吗?

【讨论】:

  • 嗨,它不起作用。我收到一个错误,即 arg 无法转换为 const char。如何将字符串转换为字符?
  • 正如@txtechhelp 所述,您可能正在.NET 中使用C++ 的托管版本。在这种情况下,使用 Process.Start 应该是更好的解决方案。您可以先尝试启动 cmd.exe 并手动输入命令,例如 >>file.bat some_arguments,以确保您的批处理文件没有问题。然后您可以尝试将 arg 替换为常量字符串,例如 Process::Start("file.bat", "some_argument") 以查看它是否有效。另请注意,如果参数中有空格,则需要用双引号将其括起来,例如 Process::Start("file.bat", "\"some arguments\"");
  • 嗨,我已经将 arg 替换为某个值,但它仍然不起作用。我试图通过显示它来获取 arg 的值 MessageBox::Show(arg);没关系。我得到了我在文本框中输入的任何内容,但它不适用于 Process.Start 方法。批处理文件没有问题,因为它是从控制台工作的。我会继续尝试,现在也从这个网站上阅读以获取参考。
  • 是不是因为路径问题,即在命令窗口中运行file.bat时,您在file.bat所在的路径中,但是当您从代码中运行file.bat时,默认path 是您的程序的路径。另一种解决方法是动态生成另一个包含参数的批处理文件,然后调用不带参数的新批处理文件。例如,您生成一个名为 run_file1.bat 的文件,其中包含“file1.bat some_arguments”。
  • 嗨,你是对的。我将可执行文件移动到与我正在阅读的源文件相同的目录中,现在可以使用。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-06
  • 1970-01-01
  • 2015-09-16
  • 2012-03-08
  • 2013-11-26
  • 1970-01-01
相关资源
最近更新 更多