将WINRAR与批处理脚本一起使用

时间:2013-12-09 08:46:51

标签: batch-file winrar

我是脚本新手,有些人可以帮助我,

我有批处理文件

  1. 查看文件名中的前8个字符,创建和 将这些文件移动到新文件夹,前8个字符作为文件夹 名称。
  2. 然后查看在步骤1中为下一个四个系列创建的文件夹 字符(9,10,11,12)并创建并移动到另一个子文件夹 将4个字符作为文件夹名称。
  3. 然后查看在步骤2中创建的文件夹,以扩展每个文件并创建和移动 到扩展名为文件夹名称的新文件夹。
  4. 例如,我的文件看起来像这样

    ABCEFGHI0703xyz.pdf
    STUVWXYZ0805xyz.pptx
    

    移至文件夹

    ABCEFGHI\0703\PDF
    STUVWXYZ\0805\PPTX
    

    请记住前8个字符是随机的,接下来的4个字符是年份和月份,以及9种类型的扩展名。

    我正在使用此批处理脚本来创建这些文件夹: -

    @ECHO OFF
    SETLOCAL ENABLEDELAYEDEXPANSION
    SET "sourcedir=C:\sourcedir"
    SET "destdir=C:\sourcedir"
    FOR /f "delims=" %%a IN (
      'dir /b /a-d "%sourcedir%\*" '
     ) DO (
     SET name=%%~na
     SET ext=%%~xa
     SET name=!name:~0,8!\!name:~8,4!\!ext:~1!
     MD "!name!" 2>nul
     MOVE "%sourcedir%\%%a" "!name!\" >nul
    )
    GOTO :EOF
    

    现在我想添加一个WINRAR命令来存档第3步中创建的扩展文件夹,我正在使用此命令创建存档。

    C:\ ABCEFGHI\0703\PDF>WINRAR A PDF C:\ ABCEFGHI\0703\PDF
    

    是否可以将此命令添加到脚本中?

1 个答案:

答案 0 :(得分:0)

好的,首先你需要在%PATH%,

的文件夹中安装rar.exe

我建议你在Windows \ System32文件夹中放一个链接,如下所示:

mklink C:\Windows\System32\rar.exe "C:\Program Files\WinRAR\rar.exe"
然后你就可以开始工作了。

正如您已经建议的那样,首先创建所需的目录树,然后将所需的文件添加到您的存档中,如下所示:

rar.exe a %ARCHIVE_NAME% MainFolder\*.pdf
rar.exe a %ARCHIVE_NAME% MainFolder\FolderA\*
rar.exe a %ARCHIVE_NAME% MainFolder\FolderB\*

%ARCHIVE_NAME%是目标档案的文件名(例如foo.rar)

这将是'MainFolder'中的每个* .pdf文件以及'FolderA'和'FolderB'中的所有内容。目录树将被保留

此外,您可能想要检查%ARCHIVE_NAME%是否已存在,因为rar只会将指定的文件添加到现有存档(可能会覆盖它们)

希望这能为你澄清一些事情。

编辑:对未知根目录进行递归执行

set ARCHIVE_NAME=%CD%\pdf_archive.rar
for /r %CD% %%d in ('PDF') do (
    if exist "%%d" (
        echo Archiving files in: %%d
        rar a "%ARCHIVE_NAME% "%%d"\*
    )
)

现在这将逐步进入每个子目录(从当前目录开始)

然后我将查找名为“PDF”的文件夹,如果它们存在,它会将该文件夹中的每个文件存档到%ARCHIVE_NAME%