我是脚本新手,有些人可以帮助我,
我有批处理文件
例如,我的文件看起来像这样
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
是否可以将此命令添加到脚本中?
答案 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%