我有两个文件夹。
folder1:C:\one\firstfolder
文件:
111-YYYYMMDD-HHMMSSms
222-YYYYMMDD-HHMMSSms
或前3位数字和日期和时间的任何值。
folder2:C:\two\secondfolder
文件:
111-YYYYMMDD-HHMMSSms
222-YYYYMMDD-HHMMSSms
或前3位数字和日期和时间的任何值。
我的要求是将第二个文件夹文件与第一个文件夹文件进行比较。
(如果两个文件中的前三位数代码相同,则folder1文件时间戳位于folder2文件时间戳之前,无需处理文件)
否则
((如果没有folder1中的文件)或(如果前三位数代码相同且folder1文件时间戳位于folder2文件时间戳之后,我们需要将这些文件移动到名为C:\ two \ secondfolder \ work)的其他文件夹中)。
答案 0 :(得分:0)
这也应该适应文件名的第一部分有超过1个文件的情况。
但它未经测试:
@echo off
set "target=C:\two\secondfolder\work"
set "source1=C:\one\firstfolder"
set "source2=C:\two\secondfolder"
if exist "%source2%\*-*" dir "%source1%" /b /a-d >nul 2>&1 || move "%source2%\*-*" "%target%\" >nul
for /f "tokens=1-2,* delims=-" %%a in ('dir "%source1%\*-*" /b /a-d ') do (
for /f "tokens=1-2,* delims=-" %%x in ('dir "%source2%\%%a-*" /b /a-d ') do (
if %%b%%c GTR %%y%%z (
if exist "%source1%\%%a-%%b-%%c" move "%source1%\%%a-%%b-%%c" "%target%\" >nul
move ""%source2%\%%x-%%y-%%z" "%target%\" >nul
)
)
)
pause