Windows 要将目录和子目录中的所有文件批量移动到其他文件夹中吗
我有一个Windows目录,其中我有4000个主子目录,在这些主子目录中我有4000个子目录,其中我有大约20个文件,每个文件的语法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 ....
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