如果文件夹名称中至少有一个与子文件夹相同的单词,我想将文件夹移动到相应的子文件夹。
我使用此代码将文件移动到文件夹中,但是我需要做同样的事情才能将文件夹移动到其他文件夹中
@echo off
setlocal enabledelayedexpansion
pushd %1
for /F "USEBACKQ tokens=*" %%a in (`dir /b /a:-d`) do (
set "_file=%%a"
for /D %%b in (*) do (
if NOT "x!_file:%%b=!" == "x!_file!" (
move "%%a" "%%b"
)
)
)
popd
编辑:示例
我在这些文件夹之前创建
Waking The Dead
Lost.dt%ky
我有这些文件夹
Waking The Dead s01
Waking The Dead s02
Lost.dt%ky.rang200
我要移动这些文件夹
Waking The Dead s01
Waking The Dead s02
进入
Waking The Dead
或
Lost.dt%ky.rang200
进入
Lost.dt%ky
答案 0 :(得分:2)
编辑必须是/ f的第二个
试试这个:
:: Q:\Test\2018\07\27\SO_51539948.cmd
@Echo off
Pushd %1
For /d %%A in (*) do For /f "delims=" %%B in (
'Dir /B "*%%~nxA*" 2^>Nul '
) do If "%%~nxA" NEQ "%%~nxB" Move "%%~fB" "%%~fA\" 2>&1>>Nul
Popd
如果输出看起来正常,请删除“移动”命令前面的回声。
之前的样本树(重命名为%
-> _
):
> tree
├───Lost.dt_ky
├───Lost.dt_ky.rang200
├───Waking The Dead
├───Waking The Dead s01
└───Waking The Dead s02
并在运行批处理后:
> tree
├───Lost.dt_ky
│ └───Lost.dt_ky.rang200
└───Waking The Dead
├───Waking The Dead s01
└───Waking The Dead s02