2

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

我有批处理文件

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

例如,我有看起来像这样的文件

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

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

4

1 回答 1

1

好的,首先你需要在 %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"\*
    )
)

现在这将递归地进入每个子目录(从您的当前目录开始)

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

于 2013-12-10T01:31:27.917 回答