我有一个程序,调用一个外部程序生成一个文件,使用命令行方式调用,命令行如下:
cmd /c "C:\Program Files\***\***.exe" "***" "***" 16 #FFFFFF 1 0 "C:\Program Files\***\files\***.png"这个命令在名称带有空格的文件夹下不能正常运行,异常信息是:
'C:\Program' 不是内部或外部命令,也不是可运行的程序或批处理文件我已经在文件路径的地方加上了“”双引号,但仍未解决问题,请问我双引号添加的位置正确吗?那里出现问题了?谢谢大家!

解决方案 »

  1.   

    string str = "\"C:\\Program Files\\***\\***.exe\"";
      

  2.   

    这就是我的写法,我的字符串是这样的:
    cmd /c \"C:\\Program Files\\***\\***\\***.exe\" \"***\" \"***\" 16 #FFFFFF 1 0 \"C:\\Program Files\\***\\files\\***.png\"补充一下:我不能把Program Files写成简写的Program~1形式,因为我无法控制这个程序会被放置到哪一个目录下。所以这个路径是动态获取的。
      

  3.   

    在C#中的话 赋值字符串的时候加个@
    比如:string s=@"...";
      

  4.   

    string str = @"你的路径";
      

  5.   

    我这里的还有什么该转义的呢?
    cmd /c \"C:\\Program Files\\***\\***\\***.exe\" \"***\" \"***\" 16 #FFFFFF 1 0 \"C:\\Program Files\\***\\files\\***.png\"
      

  6.   

    string str = @"路径(不需要转义字符)";
      

  7.   

    \"\"C:\\Program Files\\***\\***\\***.exe\"\"
    这样。
    没有xp没法测试,win7下不加第二层引号也是可以的
      

  8.   

    试了下,还是不行。我是win7的。
      

  9.   

    意思是吧拼接好的字符串在用一个双引号引起来吗?是cmd /c之后开始还是连cmd /c也一起引起来?
      

  10.   

    奇怪,前面这段路径\"C:\\Program Files\\***\\***\\***.exe\"如果加上双引号的话,就变成在其他不带空格的目录下也没有效果了。如\"D:\\MyFiles\\***\\***\\***.exe\"
      

  11.   

    如果写成Program~1这种简写的形式,如果这个目录的名称不够6位字符,那该如何处理?
      

  12.   

    试了,不行,现在使用缩写的形式做了Progra~1,但在考虑如果文件名命有空格,但又不足6位字符的话,需要怎样处理。还有的是如果文件夹名称是中文的,那么这种缩写的形式就无效了。这还是一个问题需要处理。请问有没有好的方法解决?
      

  13.   

    string path = @"C:\test.txt";这样会编译成一个完整的路径吧
      

  14.   

    命令行中要传带空格路径的话,这个路径参数要用双引号引起来就可以了。
    例如:cmd.exe "C:\Program Files\..." "系统目录"
      

  15.   

    现在有一种情况,比如现在的字符串是这样:
    cmd.exe "abc.exe" 15 -vf "movie=0:png:*****"
    这里的*****是一个文件路径,并且是带空格的,它已经在“”里面了,但是没有效果。这里的*****该如何处理呢?