gy0gy0520 2021-03-23 14:40 采纳率: 0%
浏览 12

ASP+WINRAR生成压缩包,不能同时压缩多个文件夹

用asp shell调用winrar在线打包文件夹,只能打包第一个文件夹,后面的无法打包进去。第一个打包成功后返回了0,后面的全都是返回的9,以下是部分代码
exefile = Server.MapPath("Rar.exe")
zipfile ="test.rar"
Set WshShell = server.CreateObject("Wscript.Shell")

for each folder in folders
strfiles = Server.MapPath(folder.name)
IsSuccess = WshShell.Run (exefile&" a -ep1 -m1 "&zipfile&" "&strfiles&" ",1,true) '经测试,当遍历到第二个文件夹的时候就IsSuccess返回9,具体什么意思也不懂,但是第二个开始,后面的文件全部都压缩失败。
if IsSuccess = 0 Then
response.write("目录 "& folder.name &" 打包成功.")
else
response.write("目录 "& folder.name &" 打包失败.")
end if
next

这段代码在有的电脑上可以运行成功,既可把所有的文件夹添加进压缩包,但在有的电脑上只能添加遍历到的第一个文件夹。经测试发现有些电脑上不能对压缩包追加文件进去,也就是说如果有同名压缩名存在,则生成压缩包失败。

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-07-23 23:17
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题可能出现在代码中的压缩命令参数配置上。在WinRAR的命令行参数中,`-ep1`参数表示在压缩包内保留文件夹结构,而`-m1`参数表示使用最快的压缩模式。可能造成背后的原因是第二个文件夹中可能存在与第一个文件夹相同的文件或文件夹,导致无法成功添加进压缩包。 解决方法: 尝试更改压缩命令参数,去除`-ep1`参数并加入`-r`参数,使得文件夹内所有文件和文件夹都被添加进压缩包。例如,修改代码如下:
    exefile = Server.MapPath("Rar.exe")
    zipfile = "test.rar"
    Set WshShell = server.CreateObject("Wscript.Shell")
    for each folder in folders
        strfiles = Server.MapPath(folder.name)
        IsSuccess = WshShell.Run (exefile&" a -r -m1 "&zipfile&" "&strfiles&" ",1,true)
        
        if IsSuccess = 0 Then
            response.write("目录 "& folder.name &" 打包成功.")
        else
            response.write("目录 "& folder.name &" 打包失败.")
        end if
    next
    

    这样修改后,应该能够正确地将所有文件夹添加进压缩包中。如果仍然遇到问题,可以尝试查看WinRAR的命令行参数文档,进一步调整参数配置。

    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵