我一直在寻找解决方案并找到类似的解决方案,但它们要么使用固定长度的文件名,要么用于对文件夹中的文件进行排序,而不是移动它们
我尝试做的是当工作人员放置一个名为 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
任何帮助将不胜感激!
答案 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
您需要更改sourcedir
和destdir
的设置以适合您的具体情况。
为了测试目的,所需的MOVE命令仅为ECHO
。 在您确认命令正确后,将ECHO(MOVE
更改为MOVE
以实际移动文件。附加>nul
以取消报告消息(例如1 file moved
)
假设目标目录已存在。
基本上,找到包含ahc
的所有目录名,并过滤ahc followed by 5 numerics
以获得良好的衡量标准。将这些字符串分配给%%d
。
然后,对于找到的每个%%d
,查找以%%d
开头并包含字符串ahc followed by 5 numerics
的源文件,并且前面和后面都有空格。
将名字组合在一起并显示结果......