winfrom执行CMD 命令

时间:2022-09-03 17:01:05
因为要做一个转换文件的功能(就是pdf转个swf 用pdf2swf.exe) 但是在执行的时候出了点问题 路径 我写死了就能够成功生成 但是写成用户选择文件记录路径就不能够实现 求帮帮忙,,,大恩大德唯有以身相许了0.0


using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;

namespace PdfToSwf
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

        }
        /// <summary>
        /// 选择路径按钮点击时
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                this.src.Text = openFileDialog1.FileName;
            }
        }
        /// <summary>
        /// 转换功能
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            comm cm = new comm();
            cm.RunProgram(openFileDialog1.FileName,"cd" + " " + "c:\\Program Files\\SWFTools\\");
        }
        /// <summary>
        /// 创建进程类
        /// </summary>
        public class comm
        {
            private Process p = null;
            public comm()
            {
                p = new Process();
            }
            /// <summary>
            /// 执行CMD命令
            /// </summary>
            /// <param name="ProgramName">源文件</param>
            /// <param name="cmd">需要执行的操作</param>
            public void RunProgram( string FileName,string cmd)
            {
        
                Process proc = new Process();
                proc.StartInfo.CreateNoWindow = true;
                proc.StartInfo.FileName = "cmd.exe";

                string str = "pdf2swf.exe " + FileName.Replace("'\'","'\\'")+" -o "+FileName.Replace(".pdf",".swf")+" -T9 -f";//这个是用户选择的路径 不能成功
                string str1 ="pdf2swf.exe D:\\loading\\test.pdf -o D:\\loading\\test.swf -T9 -f";//写死的路径 可以成功

                proc.StartInfo.UseShellExecute = false;
                proc.StartInfo.RedirectStandardError = true;
                proc.StartInfo.RedirectStandardInput = true;
                proc.StartInfo.RedirectStandardOutput = true;
                try
                {
                    proc.Start();
                    if (cmd.Length != 0)
                    {
                        proc.StandardInput.WriteLine(cmd);
                        proc.StandardInput.WriteLine(str);
                    }
                    proc.Close();
                    MessageBox.Show("生成成功请关闭窗口");
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                }
            }
         }
    }
}










4 个解决方案

#1


你确认一下选择的路径和你写死的路径有何不同,特别是路径中带空格的

#2


引用 楼主 udbaunui 的回复:
因为要做一个转换文件的功能(就是pdf转个swf 用pdf2swf.exe) 但是在执行的时候出了点问题 路径 我写死了就能够成功生成 但是写成用户选择文件记录路径就不能够实现 求帮帮忙,,,大恩大德唯有以身相许了0.0


C# code
?



123456789101112131415161718192021222324252627282930313233343536373……


pdf2swf.exe D:\loading\test.pdf -o D:\loading\test.swf -T9 -f //这个选择的路径

pdf2swf.exe D:\loading\test.pdf -o D:\loading\test.swf -T9 -f //写死的路径 
调试时候的结果没看出来 有什么不一样的...

#3


你选择后,给 D:\loading\test.pdf -o D:\loading\test.swf -T9 -f 加上引号试试

#4


引用 2 楼 udbaunui 的回复:
引用 楼主 udbaunui 的回复:
因为要做一个转换文件的功能(就是pdf转个swf 用pdf2swf.exe) 但是在执行的时候出了点问题 路径 我写死了就能够成功生成 但是写成用户选择文件记录路径就不能够实现 求帮帮忙,,,大恩大德唯有以身相许了0.0


C# code
?



123456789101112131415161718192021222324252627……
   我能很遗憾的说 不行吗... winfrom执行CMD 命令

#1


你确认一下选择的路径和你写死的路径有何不同,特别是路径中带空格的

#2


引用 楼主 udbaunui 的回复:
因为要做一个转换文件的功能(就是pdf转个swf 用pdf2swf.exe) 但是在执行的时候出了点问题 路径 我写死了就能够成功生成 但是写成用户选择文件记录路径就不能够实现 求帮帮忙,,,大恩大德唯有以身相许了0.0


C# code
?



123456789101112131415161718192021222324252627282930313233343536373……


pdf2swf.exe D:\loading\test.pdf -o D:\loading\test.swf -T9 -f //这个选择的路径

pdf2swf.exe D:\loading\test.pdf -o D:\loading\test.swf -T9 -f //写死的路径 
调试时候的结果没看出来 有什么不一样的...

#3


你选择后,给 D:\loading\test.pdf -o D:\loading\test.swf -T9 -f 加上引号试试

#4


引用 2 楼 udbaunui 的回复:
引用 楼主 udbaunui 的回复:
因为要做一个转换文件的功能(就是pdf转个swf 用pdf2swf.exe) 但是在执行的时候出了点问题 路径 我写死了就能够成功生成 但是写成用户选择文件记录路径就不能够实现 求帮帮忙,,,大恩大德唯有以身相许了0.0


C# code
?



123456789101112131415161718192021222324252627……
   我能很遗憾的说 不行吗... winfrom执行CMD 命令