批量压缩文件夹

时间:2012-03-01 22:29:59

标签: batch-file

我有一个文本文件,其中包含:

%userprofile%/Desktop/FileFolder1
%userprofile%/Desktop/FileFolder2
%userprofile%/Desktop/FileFolder3

等。 我希望它采取每个文件夹并压缩它们。然后我需要它将zip移动到一个特定的目录(E:/),我希望它把版本号(1.0,1.1,1.2等),如果光盘没有足够的空间,然后返回一个错误,如:

echo.Error: Not enough space on disc.

当它起作用时:

echo.Success.
pause
exit

所以,如果我运行两次,光盘应该有:

E:/FileFolder1 1.0.zip
E:/FileFolder2 1.0.zip
E:/FileFolder3 1.0.zip
E:/FileFolder1 1.1.zip
E:/FileFolder2 1.1.zip
E:/FileFolder3 1.1.zip

只要它不是太大。这就是我想要的所有事情。 注意:我会手动将文件夹添加到文本文件中。

仅供参考,我确实尝试过研究,一切都要么长得太长,要么我必须下载一些扩展包或其他什么。

编辑:我也想要:

echo.Error: No disc inserted.

如果没有插入光盘。

1 个答案:

答案 0 :(得分:0)

  1. 要迭代文本文件的内容,请阅读HELP FOR并在命令行中试验...

    FOR /F "tokens=*" %a IN (file.txt) DO @ECHO %a
    
  2. 要设置增量文件名,请在循环中尝试计数器。阅读HELP SET并尝试

    set cnt=0
    :again
    set /a cnt+=1
    if exist %dest%\%name%.%cnt%%ext% goto :again
    echo copy %src% %dest%\%name%.%cnt%%ext%
    
  3. 用于检查是否已插入磁盘,您可能需要尝试

    IF EXIST E:\NUL ECHO E:\ exists!
    
  4. 要检查磁盘中是否有足够的可用空间,您可以使用wmic。使用findstr过滤输出,并将结果“管道”为具有FOR的变量。试验..

    FOR /F "tokens=1" %i IN ('wmic logicaldisk get name^,freespace^|findstr /I "E:"') Do @echo free = %i
    

    然后检查文件是否适合,将上一个命令的结果与文件大小进行比较,请参阅HELP CALL(解释了〜z修饰符),然后尝试

     IF %free% GEQ %~z1 ECHO %1 fits in E: [%free%^>%~z1]
    
  5. 我把所有这些碎片放在一起作为练习留给你。