2013-08-02 47 views
0

我是批处理文件的新手,尽管已经彻底搜索并找到了具有类似主题的主题,但未涵盖我确切需要的内容。Windows批处理 - 根据文件名和扩展名将文件移动到文件夹

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

它们被命名为以下命名约定:公司名称 - 日期,因此,例如“戴夫斯水暖 - 01-08-13.xlsm” “戴夫斯水暖 - 01-08-13.pdf”

处理: 每周一次我手动公司名称如C移动到这些单独命名的文件夹:/文件/销售/ EXCEL/DAVES水暖/ C:/ dociuments /销售/ PDF/DAVES水暖/

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

最终我期待创建一个批处理文件,该文件将通过文件夹中的文件步进,阅读公司名称和移动每个文件基础上,名和扩展名相关的文件夹自动上面的处理。

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

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

非常感谢, 灰

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

回答

2

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

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

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

@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

+0

嗨感谢您的回复,我会测试并让您知道我如何继续。我最初注意到的一件事是我们没有设置目标文件夹。理想情况下,需要基于扩展名的两个单独的文件夹... :) – Ash

+0

批处理文件正在查看文件夹名称而不是文件名,因此在运行时创建文件夹'C:/ To-Process/t'(To To-process ,在 - 然后减去prev'o',离开T .. 谢谢, 灰 – Ash

+0

我编辑它使用不同的文件夹。它不会解析'c:\ To-Process',因为一个简单的for循环不会返回文件夹信息,但我也离开了它定义新文件夹的起始数字,所以它使用** last **只有字符。 – foxidrive

相关问题