1

C# win 表单

你好。CMD windows一直说“系统找不到指定的文件”如果我在CMD窗口中输入命令“copy /b myfile.txt test.txt”它可以工作:S

顺便说一句:有没有办法实际看到在 CMD 窗口中执行的命令?

    public void OutputBtn_Process_Click(object sender, EventArgs e)
    {
        foreach (FileInfo fi in listBox1.Items)
        {
            Process process1 = new Process();
            process1.StartInfo.UseShellExecute = false;
            process1.StartInfo.Arguments = "copy /b \""+fi.Name+"\"test.txt";
            //process1.StartInfo.LoadUserProfile = true;
            process1.StartInfo.FileName = "cmd.exe\"/k";
            process1.StartInfo.WorkingDirectory = Path.GetDirectoryName(fi.FullName);
            process1.Start();

            process1.Dispose();
            process1.Close();
        }
    }
4

3 回答 3

2

/K 是一个参数,应该在 Arguments 属性中而不是在 FileName 属性中(当然,当 LB 建议在 test.txt 前面放置一个空格时,他是正确的)

process1.StartInfo.Arguments = "/k copy /b \""+fi.Name+ "\" test.txt"; 
process1.StartInfo.FileName = "cmd.exe"; 

顺便说一句,您的代码在一个列表框上循环,并且在每个循环中,用当前 FileInfo 项的内容重新编写文件 test.txt。这样,列表中的最后一个文件将是其内容被复制到 test.txt 的文件。这个逻辑正确吗?

于 2012-08-18T09:26:52.873 回答
2

在 test.txt 前面放一个空格

copy /b \""+fi.Name+"\" test.txt";
于 2012-08-18T09:17:56.100 回答
0

可以使用xcopy 并像进程一样调用它(而不是cmd像在您的代码中那样)并处理它的输出。

使用来自 c# 的 xcopy

于 2012-08-18T09:20:03.490 回答