我正在尝试编写一个命令,可以合并目录中所有具有相似名称的文件夹。现在所有这些文件夹都是唯一命名的,所以我认为你可以根据文件夹的前 5 个字符来建立“相似名称”的概念。
文件夹看起来像
longyellowbus-092092301
longyellowbus-92382012
5fatmimn-324535232
hintout-239119393
hintout-2391038949
hintout-2983419101
dogscats-293457893
2dummerboy-9293982
2dummerboy-29848292
我想将所有名称相似的文件夹合并到一个文件夹中,并且其中的一些内容相同,因此可以覆盖。所以最终结果基本上是这样的。
longyellowbus-092092301
5fatmimn-324535232
hintout-239119393
dogscats-293457893
2dummerboy-9293982
破折号后面的数字 - 并不重要,事实上我将在合并后尝试删除它们,所以剩下的只是干净的文件夹名称。
longyellowbus
5fatmimn
hintout
dogscats
2dummerboy
我遇到了难题,希望你们能帮忙。这只是我一直在写的一个更大的命令的一部分,这也是我遇到难题的部分。
答案1
以下批处理通过在分隔符 - 处拆分目录名称来解析目录的输出,%%A 为第一个标记,%%B 为其余部分。如果不存在与第一个标记类似的目录,则将其重命名,如果存在,则强制移动长名称目录的内容,然后删除目录。
编辑路径以适合您的环境。
@Echo off
pushd "C:\path\to\your\base\folder"
for /f "Tokens=1* Delims=-" %%A in (
'Dir /B /AD *-*'
) Do If Not Exist "%%A" (
Ren "%%A-%%B" "%%A"
) Else (
Move /Y "%%A-%%B\*" "%%A\"
RmDir "%%A-%%B"
)
PopD