2017-06-22 16 views
-3

フォルダにファイルがあります(C:/location1)。私は別の場所(c:/location2)にこれらを移動する必要がありファイルをファイル名に基づいて月のフォルダに移動するためのbatファイル

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

:としてファイルがあります。現在の月が1月の場合は、2017(今年は)を作成し、現在の月が6月の場合はサブフォルダJANUARYを作成し、次にサブフォルダJUNEを作成します。次に、3つのファイルをこのフォルダに移動します。

私はこのバッチファイルを作成する前に1つのバッチファイルを作成しておらず、このタスクを開始するためのヘルプ/アイデアを探しています。私のためにチュートリアルとして始めるべきリンクは他にも素晴らしいでしょう。結果のおかげで

+4

6月として保持される代わりに、6月に短縮されていますか? – SomethingDark

+0

1月になる可能性があります – 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!" 
) 

サンプルツリー:1月JANが、6月に短縮されたのはなぜ

> 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:\ users \ publicの場所から実行しようとすると、UNCパスはサポートされていないと言われています。私はネットワークの共有場所から実行する必要があります。これを是正する方法は? – user396123

関連する問題