问题描述
我的子文件夹具有以下命名约定:
000026867_20200722_222406_SS24
我想合并所有共享相同名称最后一部分的文件夹的内容。在这种情况下,所有以SS24
结尾的文件夹。它总是在第三个下划线之后,但有可能在最后一个下划线之后超过4个字符。
我希望以SS24
结尾的所有文件夹中的所有文件都位于一个名为All_SS24
的新文件夹中
@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
感谢您的帮助。
解决方法
这或多或少是您想要的:
@echo off
pushd "C:\path\to\your\base\folder"
for /f "tokens=1-4*delims=_" %%a in ('dir /b /ad "*_*"') do (
mkdir "%%d">nul 2>&1
copy "%%a_%%b_%%c_%%d\*" "%%d" /Y
rd "%%a_%%b_%%c_%%d" /S /Q
)
popd