C# - 在程序中运行CMD命令。

我在这个程序中运行CMD命令时遇到了问题。我正在使用"lua LuaSrcDiet.lua myscript.lua -o myscriptdone.lua"命令。每当我运行程序时,它告诉我无法找到指定的文件。我猜这是由于在运行时命令提示符不在正确的目录中造成的。正确的目录是用户文件夹。你能想到任何方法来解决这个问题吗?非常感谢。

原文链接 https://stackoverflow.com/questions/10661692

点赞
stackoverflow用户531901
stackoverflow用户531901

看起来您正在尝试在文件名字段中传递参数。请将文件名设置为实际文件名(lua.exe),并将其他项目移动到参数部分。

2012-05-19 01:59:53
stackoverflow用户1118933
stackoverflow用户1118933

从:

luarun.StartInfo.FileName = "lua LuaSrcDiet.lua myscript.lua -o myscriptdone.lua";
luarun.StartInfo.Arguments = "/all";

到:

luarun.StartInfo.FileName = "lua.exe";
luarun.StartInfo.Arguments = "  LuaSrcDiet.lua myscript.lua -o myscriptdone.lua /all";

我认为这样应该可行!

更新

看到你们的评论后,我意识到你应该使用 AsynchronousFileCopy

代码来自于另一个 SO 问题的答案

public class AsyncFileCopier
{
    public delegate void FileCopyDelegate(string sourceFile, string destFile);

    public static void AsynFileCopy(string sourceFile, string destFile)
    {
        FileCopyDelegate del = new FileCopyDelegate(FileCopy);
        IAsyncResult result = del.BeginInvoke(sourceFile, destFile, CallBackAfterFileCopied, null);
    }

    public static void FileCopy(string sourceFile, string destFile)
    {
        // Code to copy the file
    }

    public static void CallBackAfterFileCopied(IAsyncResult result)
    {
        // Code to be run after file copy is done
    }
}

像这样调用:

AsyncFileCopier.AsynFileCopy("Stuff/LuaDiet/lua.exe", userPath + "/lua.exe");
2012-05-19 02:10:18