Windows批处理 – 根据文件名和扩展名将文件移动到文件夹

我是batch file的新手,虽然已经彻底search,发现了一个类似主题的主题,虽然没有涵盖我确切需要的东西。

背后的故事:我有一个Excel文件,当保存时生成两个文件,.PDF和.xlsm。 这些文件被保存到“To-Process”文件夹中。

它们的命名规则如下:公司名称 – date,例如“Daves Plumbing – 01-08-13.xlsm”Daves Plumbing – 01-08-13.pdf'

处理:每周一次,我手动将这些公司名称分别命名的文件夹,例如C:/ documents / sales / excel / daves plumbing / C:/ dociuments / sales / pdf / daves plumbing /

我欣赏公司名称中的空格不起作用,但希望我们可以使用 – 作为分隔符?

最终,我期待创build一个batch file,通过逐步浏览文件夹中的文件,读取公司名称,并根据名称和扩展名将每个文件移动到相关文件夹,从而自动完成上述处理。

在我决定处理的任何时候,我可以在该文件夹中有超过50个文件。

对此我非常感谢,希望我已经提供了足够的信息,看看这是否可行。

非常感谢,Ash

ps作为一个方面说明,我假设我无法合并发送PDF文件作为电子邮件附件之前移动它们? 例如执行batch file,通过电子邮件发送PDF到预先定义的电子邮件地址,然后将“pdf”和“xlsm”移动到相关文件夹。 这并不重要,只是对批处理的能力感到好奇。

Solutions Collecting From Web of "Windows批处理 – 根据文件名和扩展名将文件移动到文件夹"

编辑使用不同的目标文件夹。 如果您打算在同一文件夹中使用批处理文件名,请不要使用-

尝试这个。 它使用第一个 – 以文件名作为分隔符,删除最后一个空格字符,在需要时创建一个目录,并将这些文件移动到合适的文件夹中。

包含的文件名! 和%可能是一个问题。

 @echo off cd /d "c:\To-Process" setlocal enabledelayedexpansion for %%a in (*-*.*) do ( for /f "delims=-" %%b in ("%%a") do ( set "f=%%b" if /i "%%~xa"==".pdf" ( md "C:/documents/sales/pdf/!f:~0,-1!" 2>nul move "%%a" "C:/documents/sales/pdf/!f:~0,-1!" >nul ) if /i "%%~xa"==".xlsm" ( md "C:/documents/sales/excel/!f:~0,-1!" 2>nul move "%%a" "C:/documents/sales/excel/!f:~0,-1!" >nul ) ) ) 

有批/ VBS脚本发送电子邮件,附件。
谷歌为他们,或使用BlatSendmail