使用winrar搜索和存档的脚本

时间:2013-12-10 01:58:31

标签: batch-file winrar

我是脚本新手,有些人可以帮助我, 我有批处理文件

1-查看文件名中的前8个字符,创建这些文件并将其移动到新文件夹,前8个字符作为文件夹名称。

2-然后查看在步骤1中为下一个四个字符系列(9,10,11,12)创建的文件夹,并创建并移动到另一个子文件夹,接下来的4个字符作为文件夹名称。

3-然后查看在步骤2中创建的文件夹,以查找每个文件的扩展名,并创建并移动到扩展名为文件夹名称的新文件夹。

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

ABCEFGHI0703xyz.pdf
STUVWXYZ0805xyz.pptx

Move to folder
ABCEFGHI\0703\PDF
STUVWXYZ\0805\PPTX

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

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

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=C:\2BW00885"
SET "destdir=C:\2BW00885"
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

这将导致创建许多子文件夹文件夹,如doc,pdf,txt ...

现在我想创建一个存档脚本来搜索目标文件夹中名为pdf的任何文件夹并将其存档。我正在使用此命令在DOS中存档:

winrar A -ep1 -df "C:\ ABCEFGHI\0703\PDF" " C:\ ABCEFGHI\0703\PDF\*"

-df删除父文件夹, - ep1和*忽略文件夹目录中的内容。

我想添加这个

FOR /F "DELIMS==" %%D in ('search for destination folder) DO ( 
 "C:\Program Files\WinRAR\WinRAR.EXE" A -ep1 -df  "destination.rar" "%%D"  
)

问题是目标文件夹目录未知且随机,具体取决于它将创建它们的第一个脚本,我需要以这样的方式编写脚本,它将搜索任何名为pdf的文件夹的所有目标文件夹并将其存档。

非常感谢任何帮助。

阿都

1 个答案:

答案 0 :(得分:0)

看起来很熟悉的代码。

FOR /f "delims=" %%a IN (
 'dir /b /s /ad "%sourcedir%\pdf" '
 ) DO (
 ECHO winrar A -ep1 -df "%%a\destination.rar" "%%a\*"  
)

应该适合你。我不熟悉winrar语法,所以我会把那部分留给你......

如果您在解决问题时将答案标记为已接受,我们将不胜感激。


编辑:对于多个扩展程序:

For %%x in (pdf xls txt) do (
 ECHO winrar A -ep1 -df "%%x\destination.rar" "%%x\*"  
)

但是,正如我所说,我对winrar语法不满意,或者您试图将目录存档在哪个目录中。