问题如题,主要遇到的难题如下:
调用本机的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
请问是为什么呢???
谢谢各位大神 解答 小弟感激不尽
调用本机的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
请问是为什么呢???
谢谢各位大神 解答 小弟感激不尽
"C:\Program Files\中国烟草总公司20120406.rar"前后加 引号 "7z开源的, 可以用代码直接解
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 中解压没有要解压的文件还是这样的提示
C:\中国烟草总公司20120406RAR 4.11 版权 (C) 1993-2012 Alexander Roshal 17 二月 2012
共享版本 输入 RAR -? 获得帮助
正在从 C:\Program Files\中国烟草总公司20120406.rar 中解压没有要解压的文件
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 中解压没有要解压的文件还是这样的提示
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放在程序目录下
"... \"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代替,这两者都有免费的库可以用。