这也可以通过 WinRAR 完成,而不使用批处理文件,不完全按照要求,但与想要的类似。
- 启动 WinRAR 并导航到文件夹
c:\rar\。
- 选择文件夹
temp1、temp2和temp3,然后点击工具栏中的按钮添加。
- 现在作为存档名称指定 RAR 存档的文件夹,例如
c:\rar\。
- 切换到标签 文件 并检查选项将每个文件单独归档。
- 点击按钮确定。
WinRAR 现在在文件夹c:\rar\ 中创建三个RAR 压缩文件,文件名为temp1.rar、temp2.rar 和temp3.rar,每个压缩文件都包含包含所有文件和子文件夹的适当文件夹。
也可以在标签文件上更改要添加的文件列表,方法是在要排除的文件中输入例如*.txt以忽略三个文件夹中的文本文件创建档案。
最后,在 无需压缩即可存储的文件下方的编辑字段中的标签 文件 上输入 *.jpg 是有意义的,因为 JPEG 文件通常包含已压缩的数据,因此 WinRAR 无法真正进一步压缩文件的数据。
这也是一个批处理文件解决方案,用于将c:\rar\ 的所有非隐藏子文件夹及其子文件夹中的文件移动 到归档文件中,并根据要求在每个子文件夹中创建子文件夹的名称。
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "RAREXE=Rar.exe"
if exist "%RAREXE%" goto CreateArchives
if exist "%ProgramFiles%\WinRAR\Rar.exe" set "RAREXE=%ProgramFiles%\WinRAR\Rar.exe" & goto CreateArchives
if exist "%ProgramFiles(x86)%\WinRAR\Rar.exe" set "RAREXE=%ProgramFiles(x86)%\WinRAR\Rar.exe" & goto CreateArchives
for /F "skip=2 tokens=1,2*" %%I in ('%SystemRoot%\System32\reg.exe query "HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe" /v Path 2^>nul') do (
if /I "%%I" == "Path" if exist "%%~K\Rar.exe" for %%L in ("%%~K\Rar.exe") do set "RAREXE=%%~fL" & goto CreateArchives
)
for /F "skip=2 tokens=1,2*" %%I in ('%SystemRoot%\System32\reg.exe query "HKCU\Software\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe" /v Path 2^>nul') do (
if /I "%%I" == "Path" if exist "%%~K\Rar.exe" for %%L in ("%%~K\Rar.exe") do set "RAREXE=%%~fL" & goto CreateArchives
)
for /F "delims=" %%I in ('%SystemRoot%\System32\where.exe Rar.exe 2^>nul') do set "RAREXE=%%I" & goto CreateArchives
echo ERROR: Could not find Rar.exe!
echo/
echo Please define the variable RAREXE at top of the batch file
echo "%~f0"
echo with the full qualified file name of the executable Rar.exe.
echo/
pause
goto :EOF
:CreateArchives
set "Error="
for /D %%I in ("c:\rar\*") do (
echo Creating RAR archive for "%%I" ...
"%RAREXE%" m -@ -cfg- -ep1 -idq -m3 -msgif;png;jpg;rar;zip -r -s- -tl -y -- "%%I\%%~nxI.rar" "%%I\"
if errorlevel 1 set "Error=1"
)
if defined Error echo/& pause
endlocal
set "RAREXE=Rar.exe" 之后直到 :CreateArchives 的行可以在使用正确的完整限定文件名定义环境变量 RAREXE 时省略。
请阅读WinRAR程序文件夹中的文本文件Rar.txt,了解RAR命令m和使用的开关。该问题根本不包含应使用哪些选项创建 RAR 档案的任何信息。
要了解所使用的命令及其工作原理,请打开command prompt 窗口,在那里执行以下命令,并仔细阅读每个命令显示的所有帮助页面。
-
call /? ...解释%~f0 ...批处理文件的全名
echo /?
endlocal /?
for /?
goto /?
if /?
pause /?
reg /?
reg query /?
set /?
setlocal /?
where /?
有关运算符& 的说明,另请参阅single line with multiple commands using Windows batch file。
阅读有关Using command redirection operators 的Microsoft 文档以了解2>nul 的解释。当 Windows 命令解释器在执行命令 FOR 在后台启动的单独命令进程中执行嵌入的reg 或where 命令行。