none
命令提示字元有空格請問如何處理 RRS feed

  • 問題

  • 請問遇到命令提示字元路徑有空格該如何處理呢

    網路上查過@"方式"""方式都無法達到效果

    還請各位能指導小弟謝謝協助

            private void button5_Click(object sender, EventArgs e)
            {
                string MyDosComLine1, MyDosComLine2, MyDosComLine3, MyDosComLine4, MyDosComLine5, MyDosComLine6;
                MyDosComLine1 = @"""if exist C:\Program Files\Microsoft Office\office16\ospp.vbs (""";
                MyDosComLine2 = @"""cscript C:\Program Files\Microsoft Office\office16\ospp.vbs / osppsvcrestart""";
                MyDosComLine3 = @"""cscript C:\Program Files\Microsoft Office\Office16\ospp.vbs /sethst:xxx.xx.x.xx""";
                MyDosComLine4 = @"""cscript C:\Program Files\Microsoft Office\office16\ospp.vbs /sestprt:xxxx""";
                MyDosComLine5 = @"""cscript C:\Program Files\Microsoft Office\office16\ospp.vbs /act""";
                MyDosComLine6 = ")";
    
                Process p = new Process();
                p.StartInfo.FileName = "cmd.exe";
                //p.StartInfo.Arguments = "/c "; //設定程式執行參數
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.RedirectStandardInput = true;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.RedirectStandardError = true;
                p.StartInfo.CreateNoWindow = true; //true表示不显示黑框,false表示显示dos界面
                p.Start();
                StreamWriter sIn = p.StandardInput;//标准输入流
                sIn.AutoFlush = true;
    
                sIn.Write(MyDosComLine1 + System.Environment.NewLine);
                sIn.Write(MyDosComLine2 + System.Environment.NewLine);
                sIn.Write(MyDosComLine3 + System.Environment.NewLine);
                sIn.Write(MyDosComLine4 + System.Environment.NewLine);
                sIn.Write(MyDosComLine5 + System.Environment.NewLine);
                sIn.Write(MyDosComLine6 + System.Environment.NewLine);
                sIn.Write("exit" + System.Environment.NewLine);
    
                sIn.Close();

    2018年10月21日 下午 02:39

所有回覆

  • 組合出來的命令應該是:

    cscript "C:\Program Files\Microsoft Office\Office16\ospp.vbs" /sethst:xxx.xx.x.xx

    或是先把工作目錄 (Work Directory) 改到

    C:\Program Files\Microsoft Office\Office16

    然後執行:

    cscript ospp.vbs /sethst:xxx.xx.x.xx


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2018年10月21日 下午 02:53
  • 謝謝您的指導

    用您說明的第一種組合的指令會出現以下不正確提示

                string MyDosComLine1, MyDosComLine2, MyDosComLine3, MyDosComLine4, MyDosComLine5, MyDosComLine6;
                MyDosComLine1 = if exist "C:\Program Files\Microsoft Office\office16\ospp.vbs" (;
                MyDosComLine2 = cscript "C:\Program Files\Microsoft Office\office16\ospp.vbs" /osppsvcrestart;
                MyDosComLine3 = cscript "C:\Program Files\Microsoft Office\Office16\ospp.vbs" /sethst:xxx.xxx.xx.xxx;
                MyDosComLine4 = cscript "C:\Program Files\Microsoft Office\office16\ospp.vbs" /sestprt:xxxx;
                MyDosComLine5 = cscript "C:\Program Files\Microsoft Office\office16\ospp.vbs" /act;
                MyDosComLine6 = ")";

    用您指導的第二種方法先將工作目錄找到方式

    小弟愚笨看了很多網路上的範例還是無法達到效果

    可以請您指導一下小弟謝謝您

    2018年10月21日 下午 10:52
  • 試試看:

    stringpath = "\"C:\\My Documents\""; 

    Process.Start(@"D:\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe", path);



    • 已編輯 tihsMVP 2018年10月22日 上午 11:47
    2018年10月22日 上午 04:08
  • 感謝您的指導,這塊我用土法煉鋼方式解決了

    謝謝您

    2018年10月22日 上午 11:49