批处理:将一个文件夹内(有子目录)包含相同字符的文件移动到以该字符命名的文件夹内

如下图所示,将含有1234的文件都移动到以1234命名的文件夹里,将1235移动到以1235命名的文件夹里,有很多这样的文件,都在一个文件夹的子目录里,
也就是先对该目录下的文件名进行比对,然后文件名相同的文件,以该名称命名一个文件,然后将包含此文件名的文件移动到该文件夹内

@echo off & title 批量归类文件 By 依梦琴瑶
setlocal enabledelayedexpansion

for /d %%a in (*) do (
    pushd "%%~a"
        for %%b in (*) do (
            if not exist "%%~nb" md "%%~nb"
            move "%%~b" "%%~nb\"
        )
    popd
)
pause

追问

执行后没有什么变化

追答

你把脚本和那些需要归类的文件放在一起么当然没效果喽!
我是根据你提供的图来写的,你最后一张图是你真正的效果对吗?你一开始没说明,导致我以为1234,1235这些文件夹都在日期目录里面呢。那么我的脚本是和年月日这些文件夹放在一起的,运行后,就会把这些日期文件夹里面的文件进行分类。
你现在的要求是不是把一些以日期为命名的文件归类到日期文件夹里?

追问

按你说的我把bat文件移到三图日期的文件夹下面可以了,我以为你是按照前面1234那些文件写的,感谢,实际情况是还需要跨文件夹移动 ,含有相同文件名的文件分别在三个文件里面,然后需要移动到一个文件夹里!大神带徒弟吗?

追答

假设你把脚本放到每个文件夹里运行,那么如果文件夹巨多的话,你得重复拷贝脚本多少次,然后再执行多少次?估计这样下去,你累都累死,所以我就写成在日期文件夹同目录执行,执行一次,里面所有文件夹里的文件都处理了。这样总比一个一个文件夹处理要来的快吧!

温馨提示:答案为网友推荐,仅供参考
相似回答