首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >批处理:如果源文件夹上的文件名包含x,则移动到x目标文件夹

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

Stack Overflow用户
提问于 2021-01-05 08:45:23
回答 1查看 160关注 0票数 1

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

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

代码语言:javascript
运行
复制
@echo off

move D:\"FUNDACIÓN CB"\"Carteles temp"\*.* D:\"FUNDACIÓN CB"\"Carteles antiguos"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-05 11:22:27

代码语言:javascript
运行
复制
@ECHO Off
SETLOCAL ENABLEDELAYEDEXPANSION
rem The following settings for the source directory, destination directory, target directory,
rem batch directory, filenames, output filename and temporary filename [if shown] are names
rem that I use for testing and deliberately include names which include spaces to make sure
rem that the process works using such names. These will need to be changed to suit your situation.
SET "sourcedir=u:\your files"
SET "destdir=u:\your results"

FOR /f "delims=" %%s IN (
 'dir /b /ad "%destdir%\*" '
 ) DO (
 FOR /f "delims=" %%a IN (
  'dir /b /a-d "%sourcedir%\*%%s*" 2^>nul'
  ) DO (
  SET "match=%%~na"
  IF "%%~na" neq "!match:%%s=!" MOVE "%sourcedir%\%%a" "%destdir%\%%s\" >nul
 )
)
MOVE "%sourcedir%\*" "%destdir%\"

首先,收集目标目录中存在的目录名,然后依次将每个目录分配给%%s

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

终于来了。处理每个子目录名后,将其余文件从源目录移动到目标目录。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65575606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档