Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 将WINRAR与批处理脚本一起使用_Batch File_Winrar - Fatal编程技术网

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

Batch file 将WINRAR与批处理脚本一起使用,batch-file,winrar,Batch File,Winrar,我是个新手,能不能请一些人帮我一下 我有批处理文件 查看文件名中的前8个字符,创建和 将这些文件移动到新文件夹,前8个字符作为文件夹 名字 然后查看在步骤1中为接下来的四个系列创建的文件夹 创建并移动到另一个子文件夹 文件夹名称为接下来的4个字符 然后查看在步骤2中创建的文件夹,查找每个文件的扩展名以及创建和移动 到扩展名为文件夹名的新文件夹 例如,我有这样的文件 ABCEFGHI0703xyz.pdf STUVWXYZ0805xyz.pptx 移动到文件夹 ABCEFGHI\0703\PDF

我是个新手,能不能请一些人帮我一下

我有批处理文件

  • 查看文件名中的前8个字符,创建和 将这些文件移动到新文件夹,前8个字符作为文件夹 名字
  • 然后查看在步骤1中为接下来的四个系列创建的文件夹 创建并移动到另一个子文件夹 文件夹名称为接下来的4个字符
  • 然后查看在步骤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
    

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

    确定首先您需要将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循环,该循环递归到每个子目录。。。