如果名称中任何一个单词相同,则将文件移动到文件夹

时间:2016-05-08 21:37:54

标签: batch-file filenames directory

我想移动这些文件(扩展名不相关)

cane pazzo.txt
cane.torrent
incredibile cane s03.xx

进入文件夹

cane

我有这段代码

@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

但我只能移动与文件夹名称相同的文件

cane.torrent --> cane

而是这些文件

cane pazzo.txt
incredibile cane s03.xx
因为文件名中有一个单词,所以

不会移到里面。为什么?

使用.bat脚本的任何解决方案?

1 个答案:

答案 0 :(得分:2)

你的逻辑是正确的。唯一的一点是move命令应该将文件括在引号中,因此可以正确处理包含空格的名称:

move "%%a" "%%b"

我也会在比较中消除“x”,因为没有必要:

if NOT "!_file:%%b=!" == "!_file!" (