Windows 要将目录和子目录中的所有文件批量移动到其他文件夹中吗

Windows 要将目录和子目录中的所有文件批量移动到其他文件夹中吗,windows,batch-file,Windows,Batch File,我有一个Windows目录,其中我有4000个主子目录,在这些主子目录中我有4000个子目录,其中我有大约20个文件,每个文件的语法File\u CreationDate\u NUMBER\u name.ext 例如: F:\DIR\MAINSUB1\SUB2\file\u date\u number*.rar F:\DIR\MAINSUB1\SUB3\file1\u date\u number*.img F:\DIR\MAINSUB1\SUB3\file2\u date.*.txt ....

我有一个Windows目录,其中我有4000个主子目录,在这些主子目录中我有4000个子目录,其中我有大约20个文件,每个文件的语法
File\u CreationDate\u NUMBER\u name.ext

例如:

F:\DIR\MAINSUB1\SUB2\file\u date\u number*.rar

F:\DIR\MAINSUB1\SUB3\file1\u date\u number*.img

F:\DIR\MAINSUB1\SUB3\file2\u date.*.txt .... 直到400个子目录

F:\DIR\MAINSUB2\SUB1\file2\u date\u number*.txt

F:\DIR\MAINSUB2\SUB2\file2\u日期\u编号*.timg

F:\DIR\MAINSUB2\SUB3\file2\u date.*.html

有4000个主子目录,每个主子目录中有10000个子目录

我想要一个从SUB1,SUB2复制这些文件的批处理文件。。。在main子目录下

例如:

D:\FILES\MAINSUB1\将所有文件从其子文件中插入

D:\FILES\MAINSUB2\将所有文件从其子文件中插入

。。。。对于所有4000个main子目录


我还希望它能提示我添加DDMMYYYY格式的日期和0-4之间的数字。

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

不确定要将时间戳添加到哪里。根据需要进行调整

编辑-以适应评论

@回音

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

要在将文件复制到备份文件夹之前重命名这些文件吗?还有,到目前为止你尝试了什么?@foxidrive,正如我所读到的,OP只是展示了两个例子。但现在太晚了。明天见。谢谢你的回复。。我想复制文件,但不移动它们。。此外,我猜它是在复制主目录下的文件。。是否可以添加一个代码,使其能够像在F:\drive中一样在D:\drive中创建mainsub文件夹,然后将文件从各自的子文件夹复制到在D:\drive中自动创建的mainsub目录中?否,这将不起作用。的第一个
将匹配
f:\files
(您的MAINSUBx文件夹)下的所有文件夹,
的第二个
将匹配MAINSUBx(您的SUBx文件夹)下的所有文件夹,然后将其中的所有文件复制到%target%文件夹下对应的MAINSUBx。您有两个问题:您正在尝试将文件掩码放在用于处理文件夹的
中,掩码中的
%date%
变量将扩展到当前日期,而不是与文件名中的日期匹配。请为我提供一个完整的解决方案,因为我对此有点迟钝。您有一个完整的解决方案。将代码中的“f:\files\*”
更改为“d:\program files\NCR\*”
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