0

このプログラム内で CMD コマンドを実行するのに問題があります。「lua LuaSrcDiet.lua myscript.lua -o myscriptdone.lua」コマンドを使用しています。プログラムを実行すると、指定されたファイルが見つからないというメッセージが表示されます。これは、実行時にコマンドプロンプトが正しいディレクトリにないためだと思います。正しいディレクトリはユーザー フォルダです。これを修正できるように、あなたが考えることができる方法はありますか?本当にありがとう。

try 
{
    File.Copy(filedir1, userPath + "/myscript.lua", true);
}
catch
{
    MessageBox.Show("There has been an problem. It may be because you need to select a Lua file to open.", "Love Compiler", MessageBoxButton.OK, MessageBoxImage.Error);
}

File.Copy("Stuff/LuaDiet/lua.exe", userPath + "/lua.exe", true);
File.Copy("Stuff/LuaDiet/LuaSrcDiet.lua", userPath + "/LuaSrcDiet.lua", true);

Process luarun = new Process();
luarun.StartInfo.WorkingDirectory = @"C:\Users\Leachman";
luarun.StartInfo.FileName = "lua LuaSrcDiet.lua myscript.lua -o myscriptdone.lua";
luarun.StartInfo.UseShellExecute = false;
luarun.StartInfo.Arguments = "/all";
luarun.StartInfo.RedirectStandardOutput = true;
luarun.StartInfo.CreateNoWindow = false;
luarun.Start();
4

2 に答える 2

1

これらの行を編集するだけです:

から :

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

からのコードAnswer of another SO Question

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-19T02:10:18.597 に答える
1

ファイル名フィールドに引数を渡そうとしているようです。ファイル名を実際のファイル名 (lua.exe) に設定し、他の項目を引数セクションに移動してみてください。

于 2012-05-19T01:59:53.987 に答える