0

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

背景故事: 我有一个 excel 文件,保存后会生成两个文件,一个 .PDF 和一个 .xlsm。这些文件保存在“To-Process”文件夹中。

它们使用以下命名约定命名:公司名称 - 日期,例如“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 个文件。

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

非常感谢,灰

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

4

1 回答 1

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
       )
   )
)

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

于 2013-08-02T12:44:12.283 回答