Batch file 批处理:如果源文件夹上的文件名包含x,则移动到x目标文件夹

Batch file 批处理:如果源文件夹上的文件名包含x,则移动到x目标文件夹,batch-file,cmd,Batch File,Cmd,我有一个批处理脚本,可以将一个文件夹中的所有文件移动到另一个文件夹中,但我想在这里插入一个变量,例如:如果该文件夹中的任何文件包含名称或名称的一部分,例如“house”,则将该文件移动到“houses”文件夹,如果包含“dog”,则移动到“dog”文件夹。请记住,是名称的一部分,而不是文件的扩展名 我的脚本的一部分是这样的,但这会移动所有文件: @echo off move D:\"FUNDACIÓN CB"\"Carteles temp"\*.* D:

我有一个批处理脚本,可以将一个文件夹中的所有文件移动到另一个文件夹中,但我想在这里插入一个变量,例如:如果该文件夹中的任何文件包含名称或名称的一部分,例如“house”,则将该文件移动到“houses”文件夹,如果包含“dog”,则移动到“dog”文件夹。请记住,是名称的一部分,而不是文件的扩展名

我的脚本的一部分是这样的,但这会移动所有文件:

@echo off

move D:\"FUNDACIÓN CB"\"Carteles temp"\*.* D:\"FUNDACIÓN CB"\"Carteles antiguos"
@ECHO关闭
SETLOCAL ENABLEDELAYEDEXPANSION
rem源目录、目标目录、目标目录的以下设置,
rem批处理目录、文件名、输出文件名和临时文件名[如果显示]是名称
我用于测试的rem,故意包含包含空格的名称,以确保
rem确认流程使用这些名称工作。这些将需要改变,以适应您的情况。
设置“sourcedir=u:\your files”
设置“destdir=u:\your results”
对于/f“delims=”%%s IN(
'目录/b/ad”%destdir%\*“'
)做(
对于/f“delims=”%%a IN(
'dir/b/a-d“%sourcedir%\*%s*”2^>nul'
)做(
设置“匹配=%%~na”
如果“%%~na“neq”!匹配:%%s=!”移动“%sourcedir%%\%a”“%destdir%%\%s\”>nul
)
)
移动“%sourcedir%\*”“%destdir%\”
首先,收集目标目录中的目录名,并依次将每个目录名分配给
%%s

在每个文件中,查找包含directoryname
%%s
的文件名,然后使用
delayedexpansion
并从文件名中删除directoryname,检查文件的
name
部分是否包含directoryname。如果文件名确实包含目录名,则将文件
%%a
从源目录移动到找到的子目录

最后。处理完每个子目录名后,将剩余文件从源目录移动到目标目录