【问题标题】:Moving files to folders based on Name and Course Code with Batch File使用批处理文件根据名称和课程代码将文件移动到文件夹
【发布时间】:2016-02-05 05:00:42
【问题描述】:

我一直在寻找解决方案,并找到了类似解决方案,但它们要么具有固定长度的文件名,要么用于对文件夹中的文件进行排序,而不是移动它们。

我正在尝试做的是,例如,当工作人员在 S 驱动器 中放置一个名为:

的文件时
Bloggs Joe AHC20410 Student Forms.pdf

批处理文件(在一天中的特定时间运行)会将文件移动到 H 盘,进入文件夹:

H:\Student Records Current\Bloggs Joe AHC20410

因此,例如 S Drive 在批处理文件运行时可能如下所示:

Bloggs Joe AHC20410 Student Forms.pdf
Bloggs Joe AHC20410 Evidence.jpg
Doe Jane AHC31010 Workbook.doc
Doe Joe AHC20410 Images.png

任何帮助将不胜感激!

【问题讨论】:

标签: file batch-file directory


【解决方案1】:
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
FOR /f "delims=" %%d IN (
  'dir /b /ad "%destdir%\*ahc*" 2^>nul ^|findstr /i /r /c:"AHC[0-9][0-9][0-9][0-9][0-9]"'
  ) DO (
 FOR /f "delims=" %%a IN (
  'dir /b /a-d "%sourcedir%\%%d*"  2^>nul ^|findstr /i /r /c:" AHC[0-9][0-9][0-9][0-9][0-9] "'
 ) DO (
  ECHO(MOVE "%sourcedir%\%%a" "%destdir%\%%d\"
 )
)

GOTO :EOF

您需要更改sourcedir 和destdir 的设置以适应您的情况。

所需的 MOVE 命令仅用于测试目的ECHOed。 验证命令正确后,将ECHO(MOVE 更改为MOVE 以实际移动文件。附加>nul 以禁止报告消息(例如1 file moved)

假设目标目录已经存在。

基本上,找到所有包含ahc 的目录名,并过滤ahc followed by 5 numerics 以获得良好的衡量标准。将这些字符串分配给%%d。

然后对于找到的每个%%d,查找以%%d 开头并包含字符串ahc followed by 5 numerics 并且前后都有一个空格的源文件。

将名称组合在一起并显示结果...

【讨论】:

  • 非常感谢@Magoo 抽出时间来编写代码,我的批处理文件技能相当生疏。当代码找到源和目标时,我有点困惑,但没有复制……但最终注意到缺少')'。完美运行!
猜你喜欢
  • 1970-01-01
  • 2017-06-07
  • 2013-08-03
  • 1970-01-01
  • 2019-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多