Windows批处理 - 根据文件名和文件名将文件移动到文件夹。延期

时间:2013-08-02 12:33:09

标签: windows batch-file

我是批处理文件的新手,虽然已经彻底搜索并找到了具有相似主题的主题,但没有涵盖我所需要的内容。

背景故事: 我有一个excel文件,保存时生成两个文件,.PDF和.xlsm。这些文件保存在“待处理”文件夹中。

它们以以下命名约定命名:公司名称 - 日期,例如'Daves Plumbing - 01-08-13.xlsm' 'Daves Plumbing - 01-08-13.pdf'

处理: 我每周一次手动将它们按公司名称移动到单独命名的文件夹中,例如C:/ documents / sales / excel / daves plumbing / C:/ dociuments / sales / pdf / daves plumbing /

我欣赏公司名称中的空格没有帮助,但希望我们可以使用 - 作为分隔符?

最终我希望创建一个批处理文件,通过逐步浏览文件夹中的文件,读取公司名称并根据名称和扩展名将每个文件移动到相关文件夹,自动执行上述处理。

当我决定处理时,我可以在文件夹中包含超过50个文件。

非常感谢您的帮助,我希望我提供了足够的信息,看看这是否可行。

非常感谢, 灰

P.S 作为附注,我假设我无法在移动之前将PDF文件作为电子邮件附件发送?例如,执行批处理文件,通过电子邮件将PDF发送到预定义的电子邮件地址,然后将“pdf”和“xlsm”移动到相关文件夹。这并不重要,只是对批处理的能力感到好奇。

1 个答案:

答案 0 :(得分:2)

已编辑以使用不同的目标文件夹。如果您打算在同一文件夹中使用-,请不要在批处理文件名中使用@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 ) ) )

试试这个。它使用第一个 - 在文件名中作为分隔符,删除最后一个空格字符,如果需要则创建目录,并将文件移动到相应的文件夹中。

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

Blat

有批处理/ VBS脚本可以发送带有附件的电子邮件 谷歌为他们,或使用Sendmail或{{1}}。

相关问题