批处理 - 将文件移动到至少包含一个相同单词的文件夹中

时间:2016-05-04 01:02:34

标签: file batch-file

我在目录A:

中有这些文件夹名称
Veep
Vegas
Valentina
Valeria Medico Legale

我将此文件列表放在同一目录A

Veep - Season 1 BDMux
Valentina S01e01-13
Vegas S01e01-21
Valeria Medico Legale S01-02e01-16

例如

Veep [folder]
Veep - Season 1 BDMux [file]

veep 是文件夹和文件名相同的词 我想移动这个文件

Veep - Season 1 BDMux

在此文件夹中

Veep

使用文件 .bat

任何帮助?

1 个答案:

答案 0 :(得分:1)

我能想到的最简单的解决方案是使用字符串替换。请注意,如果您的目录具有匹配的子字符串,则可能无法执行您想要的操作,如:

Veep
Veeponic

虽然它不是一个完美的解决方案,如果有很多目录而且成本很高,它可能会给你一个开始。

它接收您要作为参数%1进行处理的目录:

@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!" (
            echo moving "%%a" to %%b
        )
    )
)
popd

将其另存为my_batch.bat,假设您的文件/文件夹位于C:\ songs \中,请使用my_batch C:\songs\从cmd调用它。输出将是

moving Valentina S01e01-13 to Valentina
moving Valeria Medico Legale S01-02e01-16 to Valeria
... and so on

echo行替换为正确的move命令,例如move "%%a" %%b

修改 NOT 应该适用于名称中包含空格的目录。