日期:2014-05-17  浏览次数:21119 次

makecab命令使用时的问题
现有一个_file.txt,里面每一行都是一个文件的绝对路径。
但是,_file.txt中的有的文件可能不存在,或者无法读取。也可能有2行路径重复,或者2个文件同名的情况。

需要使用makecab命令将其建立为一个压缩包。
但是,makecab每遇到一个文件不存在或两行内容相同,就会产生错误信息,诸如:
ERROR: Duplicate file name : xxx already define at ...
ERROR: Could not find file : xxxxxx

最后就是:
ERROR: MakeCAB aborted: xxx errors encountered

我想要的结果是,文件找到了就压缩进去,没找到就算了,但最后也得生成个CAB包。不要碰到错误就停止压缩了。
难道连个On Error Resume Next的选项都没有吗?

------最佳解决方案--------------------
引用:
引用:

用批处理把_file.txt处理一下,然后再makecab


你怎么用批处理找2个文件重名或2个路径重复的情况?要是这么轻松我早用了。


批处理肯定办得到了
------其他解决方案--------------------
makecab XXX 
------其他解决方案--------------------
 echo "error"
------其他解决方案--------------------
如果 makecab 没有提供忽略错误个数的话,试试将某文件加入 cab 前先看看文件是否存在?或者,修改 makecab.exe 程序文件让其无视这样错误个数。
------其他解决方案--------------------
用批处理把_file.txt处理一下,然后再makecab
------其他解决方案--------------------
引用:
用批处理把_file.txt处理一下,然后再makecab


你怎么用批处理找2个文件重名或2个路径重复的情况?要是这么轻松我早用了。

------其他解决方案--------------------
执行makecab命令,
然后
@if ERRORLEVEL 1 (
        //错误处理
)

DOS命令错误有分等级的,自己多多测试
------其他解决方案--------------------
引用:
执行makecab命令,
然后
@if ERRORLEVEL 1 (
        //错误处理
)

DOS命令错误有分等级的,自己多多测试


大哥,我要让makecab执行成功,不是失败,因为我想要压缩包。
如果makecab.exe返回失败,你能告诉我怎样得到压缩包吗= =?

现在我不求前2条解决,就处理2个文件不同路径但是同名的情况吧,makecab不会连这个都搞不定?
------其他解决方案--------------------
makecab只负责打包,你给错误命令别人也要执行成功?

自己检测_file.txt的路径是否存在,把不存在的路径过滤掉,再生成。
(用find命令写脚本,返回是否存在,如果find命令有问题,记得拷贝个find.exe到)

------其他解决方案--------------------
不要把批处理想得太弱,也不要想得太强,处理楼主这个问题还是措措有余的

100分拿来吧


@echo off
set fn=d:\_file.txt
set ftmp=d:\filelist.tmp
set cabfn=a.cab
cd.>%ftmp%
for /f "tokens=*" %%a in (%fn%) do (
  if exist "%%a" (
    findstr /i %%~xna %ftmp%