Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批量压缩文件夹_Batch File - Fatal编程技术网

Batch file 批量压缩文件夹

Batch file 批量压缩文件夹,batch-file,Batch File,我有一个文本文件,其中包含以下内容: %userprofile%/Desktop/FileFolder1 %userprofile%/Desktop/FileFolder2 %userprofile%/Desktop/FileFolder3 ect。 我想让它把每个文件夹都打包。然后我需要它将zip移动到一个特定的目录(E:/),我希望它输入版本号(1.0、1.1、1.2等),如果光盘没有足够的空间,则返回一个错误,例如: echo.Error: Not enough space on dis

我有一个文本文件,其中包含以下内容:

%userprofile%/Desktop/FileFolder1
%userprofile%/Desktop/FileFolder2
%userprofile%/Desktop/FileFolder3
ect。 我想让它把每个文件夹都打包。然后我需要它将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.
如果没有插入光盘

  • 要迭代文本文件的内容,请阅读的帮助,然后在命令行中使用

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

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

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

    FOR /F "tokens=1" %i IN ('wmic logicaldisk get name^,freespace^|findstr /I "E:"') Do @echo free = %i
    
    然后,要检查文件是否适合,请将上一个命令的结果与文件大小进行比较,请参阅
    帮助调用
    (此处解释了~z修饰符),然后重试

     IF %free% GEQ %~z1 ECHO %1 fits in E: [%free%^>%~z1]
    

  • 我把把把所有这些东西放在一起的方法留给你作为练习。

    你需要使用一种特殊的工具。有许多可用的文件压缩实用程序。大多数都有一个命令行界面。7-zip是我使用的,可能是最流行的。