我是批处理文件编码的新手,需要你的帮助。
我是这些目录:
c:\rar\temp1\xy.jpg
c:\rar\temp1\sd.jpg
c:\rar\temp1\dd.jpg
c:\rar\temp2\ss.jpg
c:\rar\temp2\aa.jpg
c:\rar\temp2\sd.jpg
c:\rar\temp3\pp.jpg
c:\rar\temp3\ll.jpg
c:\rar\temp3\kk.jpg
我想将它们压缩到这个
c:\rar\temp1\temp1.rar
c:\rar\temp2\temp2.rar
c:\rar\temp3\temp3.rar
如何使用WinRAR完成此操作?
答案 0 :(得分:6)
使用 WinRAR 也可以在不使用批处理文件的情况下完成此操作,不完全符合要求,但与所需内容类似。
c:\rar\
。temp1
,temp2
和temp3
,然后点击工具栏中的添加按钮。c:\rar\
。 WinRAR 现在创建3个RAR档案,文件夹temp1.rar
,temp2.rar
和temp3.rar
位于文件夹c:\rar\
中,每个档案包含相应的档案包含所有文件和子文件夹的文件夹。
要添加的文件列表也可以在选项卡文件上进行更改,方法是输入要排除的文件中的*.txt
以忽略这些文件中的文本文件创建档案的文件夹。
最后,在文件中的文件选项卡上输入*.jpg
是有意义的文件无压缩存储,因为JPEG文件通常包含已经压缩的数据和因此 WinRAR 无法真正压缩文件的数据。
答案 1 :(得分:1)
在Python v3.x中:
import os
# NOTE: Script is disabled by default, uncomment final line to run for real.
base_dir = "E:\target_dir"
# base_dir = os.getcwd() # Uncomment this to run on the directory the script is in.
# Stage 1: Get list of directories to compress. Top level only.
sub_dirs_raw = [os.path.join(base_dir, o) for o in os.listdir(base_dir) if os.path.isdir(os.path.join(base_dir, o))]
# Stage 2: Allow us exclude directories we do not want (can omit this entire section if we wish).
dirs = []
for d in sub_dirs_raw:
if "legacy" in d or "legacy_old" in d:
continue # Skip unwanted directories
print(d)
dirs.append(d)
# Stage 3: Compress directories into .rar files.
for d in dirs:
os.chdir(d) # Change to target directory.
# Also adds 3% recovery record using "-rr3" switch.
cmd = f"\"C:\Program Files\\WinRAR\\rar.exe\" a -rr3 -r {d}.rar *"
print(cmd)
# Script is disabled by default, uncomment this next line to execute the command.
# os.system(cmd)
注意:
os.system(cmd)
取消注释最后一行#
。mydir1
,mydir2
,mydir3
的目录,它将创建三个.rar
文件:mydir1.rar
,{{ 1}},mydir2.rar
。mydir3.rar
中,然后从任何目录运行DOS命令script.py
。使用第二行设置目标目录。或者,使用PyCharm运行脚本。答案 2 :(得分:0)
这应该工作它还检查文件是否压缩好。 您可能需要更改此部分" cd Program Files \ WinRAR"取决于winrar的安装位置。
@echo Off
Cd\
cd Program Files\WinRAR
rar a -r c:\rar\temp1\temp1.rar c:\rar\temp1\*.jpg c:\rar\temp1\
if "%ERRORLEVEL%"=="0" ( Echo Files compressed
) Else Echo Failed
rar a -r c:\rar\temp2\temp2.rar c:\rar\temp2\*.jpg c:\rar\temp2\
if "%ERRORLEVEL%"=="0" ( Echo Files compressed
) Else Echo Failed
rar a -r c:\rar\temp3\temp3.rar c:\rar\temp3\*.jpg c:\rar\temp3\
if "%ERRORLEVEL%"=="0" ( Echo Files compressed
) Else Echo Failed
Pause
答案 3 :(得分:0)
此脚本也可以正常工作:
@echo off
for %%a in ("C:\rar\temp1" "C:\rar\temp2" "C:\rar\temp3") do (
pushd "%%~a"
"C:\Program Files\WinRAR\rar.exe" a -r temp.rar *
popd
)