想要将目录和子目录中的所有文件批量移动到不同的文件夹中

时间:2013-11-07 18:55:41

标签: windows batch-file

我有一个Windows目录,其中有4000个主要子目录,在那些主要子目录中,我有4000个子目录,其中我有大约20个文件,每个文件都有File_CreationDate_NUMBER_name.ext语法。

示例:

  

F:\ DIR \ MAINSUB1 \ SUB2 \ file_date_number * .rar程序

     

F:\ DIR \ MAINSUB1 \ SUB3 \ file1_date_number * .IMG

     

F:\ DIR \ MAINSUB1 \ SUB3 \ file2_date _ * TXT   ....直到400 SUB目录

     

F:\ DIR \ MAINSUB2 \ SUB1 \ file2_date_number * .TXT

     

F:\ DIR \ MAINSUB2 \ SUB2 \ file2_date_number * .timg

     

F:\ DIR \ MAINSUB2 \ SUB3 \ file2_date _ * HTML

有4000个MainSub目录,每个MainSub目录中有10000个子目录。

我想要一个批处理文件,它从MAINUB目录下的SUB1,SUB2 ...复制这些文件...

示例:

  

D:\ FILES \ MAINSUB1 \从其SUBS进入它的所有文件..

     

D:\ FILES \ MAINSUB2 \从其SUBS进入它的所有文件..

     

....所有4000个MAINSUB目录

我还希望它能够提示我以0-4格式添加DDMMYYYY和NUMBER格式的日期。

1 个答案:

答案 0 :(得分:0)

这将处理文件的移动(如果从命令行使用,则将%%替换为%)。

for /D %%f in ("d:\files\*") do for /D %%g in ("%%~ff\*") do move "%%~fg\*" "%%~ff"

不确定添加时间戳的位置。根据需要进行调整

编辑 - 以适应评论

@echo off

setlocal enableextensions

rem from/where to copy
set "source=f:\dir"
set "target=d:\files"

set /p "df=date of files ? :"
set /p "nf=number ? :"

rem ensure final target directory exists
if not exist "%target%" mkdir "%target%"

rem do file copy
for /D %%f in ("f:\files\*") do (
    if not exist "%target%\%%~nxf" mkdir "%target%\%%~nxf" > nul
    for /D %%g in ("%%~ff\*") do (
        copy "%%~fg\*_%df%_%nf%*" "%target%\%%~nxf"
    )
)

endlocal