我有大约10.000个目录,这些目录具有以下结构
./AAA/AAA/somedirs/file.txt
..
./BCDE/BCDE/somedirs/file.txt
..
./FGMAB/FGMAB/somedirs/file.txt
..
etc
我想减少两个相同名称的连续目录的重复目录路径模式:
./X/X/etc/
到具有该名称的单个目录:
./X/etc/
我想到了在这样的X/X模式之后找到所有子结构,并使用以下命令将它们移至X/:
for /r /d %x in (*/%y/%y/*) do move "%x" ".."
这确实可以运行,但实际上似乎没有任何作用。
任何人都知道是否以及如何做到这一点?
最佳答案
假设所有重复的名称都位于所示的树结构的顶部,则应执行以下操作:
md dummy\x
for /D %x in (*) do if exist %x\%x cmd /c "move %x dummy\x\%x & move dummy\x\%x\%x %x & rd dummy\x\%x"
首先测试! (并且请记住,当命令位于批处理文件中时,百分号需要加倍。)
关于windows - 如何缩短目录路径模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12437333/