Batch file 将WINRAR与批处理脚本一起使用
我是个新手,能不能请一些人帮我一下 我有批处理文件Batch file 将WINRAR与批处理脚本一起使用,batch-file,winrar,Batch File,Winrar,我是个新手,能不能请一些人帮我一下 我有批处理文件 查看文件名中的前8个字符,创建和 将这些文件移动到新文件夹,前8个字符作为文件夹 名字 然后查看在步骤1中为接下来的四个系列创建的文件夹 创建并移动到另一个子文件夹 文件夹名称为接下来的4个字符 然后查看在步骤2中创建的文件夹,查找每个文件的扩展名以及创建和移动 到扩展名为文件夹名的新文件夹 例如,我有这样的文件 ABCEFGHI0703xyz.pdf STUVWXYZ0805xyz.pptx 移动到文件夹 ABCEFGHI\0703\PDF
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
是否可以将此命令添加到脚本?确定首先您需要将rar.exe放在%PATH%的文件夹中 我建议您在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\u NAME%是新目标存档的文件名(如foo.rar)
这将删除“MainFolder”中的每个*.pdf文件以及“FolderA”和“FolderB”中的所有内容。目录树将被保留
此外,您可能需要检查%ARCHIVE\u 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\u NAME%查看WinRAR folderWell中的rar.exe。。。普。嗯,在回答你的问题时:是的,这是可能的。。。除此之外,我不知道你到底想知道什么。。。请您具体说明一下,您尝试了什么,失败在哪里?(或者你失败了吗?你的解决方案似乎很可靠……)不,我没有试过。我不确定。如何将winrar与脚本合并。尤其是当我必须rar一个尚未创建的文件时。脚本需要先创建文件夹,然后压缩它们?我该怎么做?你可以帮助脚本。谢谢问题是我的主文件夹是未知的第一个脚本将创建这些目录。我需要脚本在任何目标文件夹中搜索称为PDF的内容并将其存档。这些PDF文件夹存在于什么级别?(你需要递归吗?)所以这里有所有随机的8位文件夹名,然后是名为0705(年和月)的子文件夹,然后是名为PDF的实际子文件夹需要更多关于递归的信息我相信是的,因为winrar需要在第一个脚本创建文件夹后工作。请参阅我文章中的编辑。它提供了一个for循环,该循环递归到每个子目录。。。