Batch file 根据文件名按日期批创建文件夹

Batch file 根据文件名按日期批创建文件夹,batch-file,Batch File,我想到的最好的办法是: for %%i in (*) do md "%%~ni" && move "%%~i" "%%~ni" 现在的问题是,我正在为每个文件创建一个文件夹,并将所有文件移动到相应的文件夹中,但相关内容现在位于不同的文件夹中,而具有完全相同文件名的内容则留在主文件夹中 我的文件夹中有文件: sadf_02.07.2018_sadfff.xlsx sadf_03.07.2018_fgtrh.xlsx suyuadf_05.07.2018_uktyuk.xlsx s

我想到的最好的办法是:

for %%i in (*) do md "%%~ni" && move "%%~i" "%%~ni"
现在的问题是,我正在为每个文件创建一个文件夹,并将所有文件移动到相应的文件夹中,但相关内容现在位于不同的文件夹中,而具有完全相同文件名的内容则留在主文件夹中

我的文件夹中有文件:

sadf_02.07.2018_sadfff.xlsx
sadf_03.07.2018_fgtrh.xlsx
suyuadf_05.07.2018_uktyuk.xlsx
sarthdf_05.07.2018_sadyukyfff.xlsx
sabbdf_05.07.2018_saukyukdfff.xlsx
我需要按名称中的日期创建文件夹,并将此文件移动到此文件夹中

因此,我应该:

02.07.2018
    sadf_02.07.2018_sadfff.xlsx
03.07.2018
    sadf_03.07.2018_fgtrh.xlsx
05.07.2018
    suyuadf_05.07.2018_uktyuk.xlsx
    sarthdf_05.07.2018_sadyukyfff.xlsx
    sabbdf_05.07.2018_saukyukdfff.xlsx

那么如何做到这一点呢?

以下批次使用:

枚举%%a中文件的简单方法 a用于/f在下划线处拆分文件名并将日期获取到%%B 将日期传递给findstr并粗略检查结构 如果不存在,则创建日期文件夹 最后移动文件 运行批处理后的示例树:

> tree /f
├───02.07.2018
│       sadf_02.07.2018_sadfff.xlsx
│
├───03.07.2018
│       sadf_03.07.2018_fgtrh.xlsx
│
└───05.07.2018
        sarthdf_05.07.2018_sadyukyfff.xlsx
        suyuadf_05.07.2018_uktyuk.xlsx

根据您的需要,您可能希望在\上使用For/F循环定界。为了安全起见,还可能使用正则表达式搜索可能的dd.MM.yyyy模式。使用正则表达式和日期时,通常建议使用其他语言。如何将PushD X:\Folder\to\start | | Echo找不到文件夹并暂停并退出/b 1更改为脚本所在的文件夹?将其更改为*.xlsx文件所在的路径。如果在同一位置,则删除整行。每次更改变量时,我有>100个文件夹?引用:我有文件夹中的文件:如果有更多文件夹/子文件夹。你的问题需要提供更多的信息。手工操作并比较-
> tree /f
├───02.07.2018
│       sadf_02.07.2018_sadfff.xlsx
│
├───03.07.2018
│       sadf_03.07.2018_fgtrh.xlsx
│
└───05.07.2018
        sarthdf_05.07.2018_sadyukyfff.xlsx
        suyuadf_05.07.2018_uktyuk.xlsx