2017-06-22 168 views
-3

我有一個文件夾中的文件(C:/location1)。文件如下:bat文件根據文件名將文件移動到月份文件夾

A-14-0005 - Title1 - 06202017.pdf 
B-14-1111 - Title2 - 06202017.pdf 
B-15-7676 - Title3 - 06202017.pdf 

我需要將這些移動到另一個位置(c:/location2)。如果當前月份是一月份,則創建文件夾2017(今年),然後創建子文件夾JANUARY,如果當前月份是六月,則創建子文件夾JUNE。然後將這3個文件移動到該文件夾​​中。

我之前沒有寫過一個批處理文件,並且正在尋找一些幫助/想法來創建一個來啓動此任務。任何其他鏈接,作爲我開始的教程也會很好。結果由於

+4

爲什麼月縮短到JAN但月保持在6月,而不是被縮短到JUN? – SomethingDark

+0

它可以是一月 – user396123

+3

您有具體問題嗎?如果沒有,那麼讓我建議開始收集你自己的想法,並開始實施基於它們的腳本;當你有問題回到這裏時。如果你期望有人爲你寫腳本,那麼你在這裏完全錯了。請學習[問]! – aschipfl

回答

0
@echo off 
set month-num=%date:~3,2% 
set year-num=%date:~6,10% 
IF "%month-num:~0,1%"=="0" SET month-num=%month-num:~1% 
FOR /f "tokens=%month-num%" %%a in ("January February March April May June July August September October November December") do set mo-name=%%a 

if not exist "C:\location2\%year-num%" md C:\location2\%year-num%\%mo-name%" 
copy "C:\location1\A-14-0005 - Title1 - 06202017.*" "C:\location2\%year-num%\%mo-name%\" /y 
copy "C:\location1\B-14-1111 - Title2 - 06202017.*" "C:\location2\%year-num%\%mo-name%\" /y 
copy "C:\location1\B-15-7676 - Title3 - 06202017.*" "C:\location2\%year-num%\%mo-name%\" /y 
pause 
+0

假設文件名稱只是一個示例,在批處理中將它們靜態化並沒有多大用處。還有一個舉措是不需要副本。 – LotPings

+0

文件擴展名將爲.pdf – user396123

1
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion 
Set "Dir1=c:\location1" 
Set "Dir2=c:\location2" 

:: Build Mon[01..12] array 
Set Cnt=100 
For %%A in (Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
) Do Set /A Cnt+=1&Set Mon[!Cnt:~-2!]=%%A 
::Set Mon[ 

For /f "delims=" %%A in (
    ' Dir /B/A-D "%Dir1%\?-??-???? - * - *.pdf" ^|findstr "[01][0-9][0-3][0-9]20[0-9][0-9]\.pdf$" ' 
) Do (
    Set "File=%%~nA" 
    Call Set "MoveTo=%Dir2%\!File:~-4!\%%Mon[!File:~-8,2!]%%\" 
    MD "!MoveTo!" >Nul 2>&1 
    Move "%%~fA" "!MoveTo!" 
) 

樣品樹:

> Tree /F . 
C:\LOCATION2 
└───2017 
    └───Jun 
      B-15-7676 - Title3 - 06202017.pdf 
      B-14-1111 - Title2 - 06202017.pdf 
      A-14-0005 - Title1 - 06202017.pdf 
+1

幹得好,Aacini! **'; **'Ops,你是不是Aacini!無論如何,做得好!我只是使用完整的'月份'名稱作爲數組,以便更清楚。 – Aacini

+0

非常感謝你! – user396123

+0

批次,當我試圖從我的c:\用戶\公共位置運行這個,它說不支持UNC路徑。我確實需要從網絡共享位置運行它。如何糾正這一點? – user396123

相關問題