2013-10-02 48 views
1

我對批處理文件比較陌生。我可以做非常簡單的,但是接下來的一個將我扔了一圈。批處理文件根據日期移動PDF文件,必要時創建文件夾

我們有針對下列方式爲客戶節省了生成PDF報價程序...

FirstnameLastname_Estimate_MMDDYYYY - ###

例如,如果我有一個客戶「李四」我們給他估計今年聖誕節前夕(我們系統中排名第239位),看起來像這樣。

JohnDoe_Estimate_12242013-239.pdf

現在它生活在一個文件夾 「C:\估計」。我希望批處理文件執行的是查看「C:\ Estimates」文件夾中的所有文件,並自動按年份移動文件。因此,2012年所有的估算值都會在「C:\ Estimates \ 2013」​​中放入2013年的「C:\ Estimates \ 2012」等文件夾中。

這裏的一些批處理文件讓我接近,但沒有雪茄。任何幫助都會很棒。謝謝!

+0

請包括代碼 - 您的現有批處理文件的部分讓您關閉,以及它們如何短缺。通常,將工作分解爲小塊並編寫代碼以正確執行單個塊,然後組合這些部分。另外:它是否必須是批處理文件?與其他腳本語言(如python或ruby)相比,批處理文件通常既不健壯也不容易用於任何中途複雜的事情。 – Edward

回答

2

C:\Estimates文件夾中啓動此項。文件名在客戶端名稱中不應有_-

@echo off 
setlocal disabledelayedexpansion 
for %%a in (*.pdf) do (
    for /f "tokens=3 delims=_-" %%b in ("%%a") do (
    set variable=%%b 
     setlocal enabledelayedexpansion 
     set variable=!variable:~-4! 
     md !variable! 2>nul 
     move "*!variable!-*.pdf" !variable! >nul 
     endlocal 
) 
) 
+0

這裏if存在的目的是什麼?外'for'不會返回不存在的條目,那麼爲什麼要測試它們的存在? –

+0

我想我得到了延期擴張的權利。我想是因爲'for/f'在開始之前收集所有的文件名,而在循環中'move'命令不僅僅刪除'%% a'中的文件名,所以'%%' %a'不會被發現。 – foxidrive

+0

啊,我明白了,有道理,我錯過了,謝謝。 –

相關問題