问题如题,主要遇到的难题如下:
   调用本机的winRAR.exe命令来解压  但是如果解压的路径文件加名有空格则提示“没有找到解压文件”
CString WinRARParam = _TEXT("x") + strFilePath + _TEXT(" ") + strUnRarPath;
CString Commend = m_WinRARPath + _TEXT(" ") + WinRARParam;
STARTUPINFO si = {sizeof(si)};
PROCESS_INFORMATION pi;
BOOL bRet = CreateProcess(NULL,Commend.GetBuffer(Commend.GetLength()),NULL,NULL,FALSE,0,NULL,NULL,&si,&pi); if (bRet)
{
if (!WaitForSingleObject(pi.hProcess,INFINITE))
{
m_listBoxStatus.AddString("解压成功");
}
}
其中出现问题的路径如下:winRAR.exe x C:\Program Files\中国烟草总公司20120406.rar C:\Program Files\中国烟草总公司20120406    就提示找不到解压文件 如果是这样就可以正常解压 winRAR.exe x C:\中国烟草总公司20120406.rar C:\中国烟草总公司20120406
请问是为什么呢???
谢谢各位大神 解答 小弟感激不尽

解决方案 »

  1.   

    C:\Program Files\中国烟草总公司20120406.rar 用
    "C:\Program Files\中国烟草总公司20120406.rar"前后加 引号 "7z开源的, 可以用代码直接解
      

  2.   

    路径加上   "c::\xxx"
      

  3.   

    您好  这个我测试过不行 
     c:\Program Files\WinRAR>rar.exe x "C:\Program Files\中国烟草总公司20120406.rar"
    C:\中国烟草总公司20120406RAR 4.11    版权 (C) 1993-2012 Alexander Roshal    17 二月 2012
    共享版本         输入 RAR -? 获得帮助
    正在从 C:\Program Files\中国烟草总公司20120406.rar 中解压没有要解压的文件还是这样的提示
      

  4.   

    你好  你这个也不行c:\Program Files\WinRAR>rar.exe x "C:\Program Files\中国烟草总公司20120406.rar"
    C:\中国烟草总公司20120406RAR 4.11    版权 (C) 1993-2012 Alexander Roshal    17 二月 2012
    共享版本         输入 RAR -? 获得帮助
    正在从 C:\Program Files\中国烟草总公司20120406.rar 中解压没有要解压的文件
      

  5.   

    你好 这个我测试过不行  
     c:\Program Files\WinRAR>rar.exe x "C:\Program Files\中国烟草总公司20120406.rar"
    C:\中国烟草总公司20120406RAR 4.11 版权 (C) 1993-2012 Alexander Roshal 17 二月 2012
    共享版本 输入 RAR -? 获得帮助
    正在从 C:\Program Files\中国烟草总公司20120406.rar 中解压没有要解压的文件还是这样的提示
      

  6.   

    你先开个cmd,把你调试到的那段解压命令复制过来在cmd里输进去看看提示什么错误不就知道问题所在了吗CString rarexe,rarfile;
    CString packdir;
    MyGetDir(packdir);
    rarexe = packdir+_T("rar.exe");
    rarfile = packdir+m_rarfilename;
    CString cmd;
    cmd.Format(_T("\"%s\" x -y \"%s\" \"%sbin\\\"\r\n"),rarexe,rarfile,packdir);
    char mcmd[4096];
    memset(mcmd,0,4096);这是我以前写的组织解压命令的代码
    MyGetDir函数是取得当前目录,我的rar.exe放在程序目录下
      

  7.   

    好的 我测试下  我那个命令在cmd上运行也是出现问题的  winRAR.exe x C:\Program Files\中国烟草总公司20120406.rar C:\Program Files\中国烟草总公司20120406 就提示 :找不到解压文件
      

  8.   

    对于含有空格的路径要用双引号扩起来。
    "... \"C:\\Program Files\\中国烟草总公司20120406.rar\" "C:\\Program Files\\中国烟草总公司20120406" "
    可以利用Windows SDK里的Shell轻量工具函数快速做到这个:
    http://msdn.microsoft.com/en-us/library/windows/desktop/bb773739.aspx另外不建议去调用WinRAR.exe,在WinRAR的安装目录中有一个rar.exe,是命令行版本的RAR。说明文件是rar.txt不过rar的使用是需要授权的,所以最好还是用7z或zip代替,这两者都有免费的库可以用。
      

  9.   

    "... \"C:\\Program Files\\中国烟草总公司20120406.rar\" \"C:\\Program Files\\中国烟草总公司20120406\"  "
      

  10.   

    嗯 好的 谢谢大家 问题解决  的确要加引号  我在cmd命令行上测试 加引号不行  后来我将我的程序上面添加引号就ok 谢谢大家的帮忙