使用文件夹名称键将文件夹移动到相应的子文件夹

时间:2018-07-26 13:22:47

标签: batch-file

如果文件夹名称中至少有一个与子文件夹相同的单词,我想将文件夹移动到相应的子文件夹。

我使用此代码将文件移动到文件夹中,但是我需要做同样的事情才能将文件夹移动到其他文件夹中

@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

1 个答案:

答案 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