用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
这段代码在有的电脑上可以运行成功,既可把所有的文件夹添加进压缩包,但在有的电脑上只能添加遍历到的第一个文件夹。经测试发现有些电脑上不能对压缩包追加文件进去,也就是说如果有同名压缩名存在,则生成压缩包失败。
ASP+WINRAR生成压缩包,不能同时压缩多个文件夹
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注让阿豪来帮你解答,本回答参考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的命令行参数文档,进一步调整参数配置。
解决 无用评论 打赏 举报