使用批处理文件

时间:2016-02-05 05:00:43

标签: file batch-file directory

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

我尝试做的是当工作人员放置一个名为 S drive 的文件时:

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

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

@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

您需要更改sourcedirdestdir的设置以适合您的具体情况。

为了测试目的,所需的MOVE命令仅为ECHO在您确认命令正确后,将ECHO(MOVE更改为MOVE以实际移动文件。附加>nul以取消报告消息(例如1 file moved

假设目标目录已存在。

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

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

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