文件夹层层嵌套,模式是这样的:
a01夹中有子文件夹b01,b02,b03…
b01子文件夹中有子文件夹c01,c02,c03…
b02子文件夹中有子文件夹d01,d02,d03…
b03子文件夹中有子文件夹e01,e02,e03…
a02夹中有子文件夹b01,b02,b03…
b01子文件夹中有子文件夹c01,c02,c03…
b02子文件夹中有子文件夹d01,d02,d03…
b03子文件夹中有子文件夹e01,e02,e03…
a03夹中有子文件夹b01,b02,b03…
b01子文件夹中有子文件夹c01,c02,c03…
b02子文件夹中有子文件夹d01,d02,d03…
b03子文件夹中有子文件夹e01,e02,e03…
以此类推。。。
最底层文件夹里有文件,中间层文件夹内没有文件,只有下一级文件夹。(另:文件夹的位数不一定三位,可能一位两位或者四位五位。)
要求指定路径后,输出的结果摆脱文件夹嵌套,形成同一级文件夹,文件夹中内容不变,格式要求是这样的:
a01-b01-c01。。。。
超棒,测试成功!不过执行第二行命令“set "np=e:\xx\xxx"时,数据结果有误,丢失最后一个文件夹。
能否再帮忙写一个反向程序,即将同一目录下a01-b01-c01这样格式的大量文件夹,处理成多层嵌套,结果如原始问题中的嵌套模式?
如能帮忙,将再追加100分。如果不能,也会将本回答选为最佳答案,谢谢!
@echo off
cd/d "%~dp0"
for /f "delims=" %%a in ('dir/b/ad *-*')do (
echo %%a
set "s=%%a"
setlocal enabledelayedexpansion
set "s=!s:-=" "!"
for %%b in ("!s!")do (
if not exist %%b md %%b
cd %%b)
move "%~p0%%a\*.*">nul
cd "%~p0"
rd/q "%%a"
endlocal)
pause
结果输出到指定文件夹中,而不是保留在原文件夹里,a01-b01-c01为文件夹名称,里面保留原c01的内容。所有中层文件夹均删除。
文件夹位数不一定三位a01,可能是两位a1,或者五位a0001。
就是把最底层的文件夹全部分离出来,放在同一级目录下面,因为最底层文件夹名称相同,直接复制出来,会被相互覆盖,所以用短线连接,将上面几层文件夹名称接i起来,合成类似a01-b01-c01样式的文件夹。这样就不会出现被覆盖的情况了。这样每一个新文件夹,都包含上面几层文件夹的信息,也会分类清晰。