批处理 - 将以pattern开头的文件移动到某个文件夹

时间:2015-04-20 15:43:00

标签: windows batch-file

我有一个像这样组织的文件列表:test%MM%YYYY%DD.txt,例如:

test01201401.txt
test01201402.txt
test01201403.txt
...
test02201401.txt
test02201402.txt
...

我想创建基于月度的文件夹,例如\test%MM%YYYY(例如\test012014\test022014),然后将所有基于每日的.txt文件移动到相应的文件夹中,例如全部test012014*文件被移动到\test012014文件夹,所有test022014*文件都被移动到\test022014文件夹,依此类推。 谢谢!

1 个答案:

答案 0 :(得分:1)

@echo off
setlocal enabledelayedexpansion
for /f %%f in ('dir /b ^| findstr /r "^test[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.txt$"') do (
    set "filename=%%~nf"
    if not exist "!filename:~0,10!" md "!filename:~0,10!"
    move "%%~f" "!filename:~0,10!"
)

对于与此正则表达式^test[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.txt$匹配的每个文件名(文件名以test开头,后跟8位数字,以.txt结尾),它会检查名称是否与文件名的前10个字符(t e s t M M Y Y Y Y)已经存在,如果没有创建,则会将文件移动到那里。