2017-06-22 5 views
-3

Ich habe Dateien in einem Ordner (C:/location1). Die Dateien sind wie:bat Dateien zum Verschieben von Dateien in Monatsordner basierend auf dem Dateinamen

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

ich diese an einen anderen Ort verschieben müssen (c:/location2). Wenn der aktuelle Monat Januar ist, erstellen Sie den Ordner 2017 (für dieses Jahr) und erstellen Sie den Unterordner JANUARY. Wenn der aktuelle Monat Juni ist, erstellen Sie den Unterordner JUNE. Dann verschiebe die 3 Dateien in diesen Ordner.

Ich habe noch keine Batch-Datei geschrieben und suche nach Hilfe/Ideen zum Erstellen einer, um diese Aufgabe zu starten. Irgendwelche Links wo sonst als Tutorial für mich zu beginnen wird auch großartig sein. Dank

+4

Warum JANUAR-JANUAR verkürzt wird aber Juni im Juni gehalten wird, statt auf Juni verkürzt? – SomethingDark

+0

kann es sein Januar – user396123

+3

Haben Sie eine spezifische Frage? Wenn nicht, dann lass mich vorschlagen, deine eigenen Ideen zu sammeln und das Script basierend darauf zu implementieren. Wenn Sie Probleme haben, kommen Sie hierher zurück. Wenn Sie erwarten, dass jemand ein Skript für Sie schreibt, liegen Sie hier völlig falsch. Bitte lerne [fragen]! – aschipfl

Antwort

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

Vorausgesetzt, dass die Dateinamen nur ein Beispiel sind, ist es nicht sinnvoll, sie in einem Batch statisch zu haben. Auch ein Umzug wurde benötigt, keine Kopie. – LotPings

+0

die Dateierweiterungen werden .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!" 
) 

Beispiel Baum des Ergebnisses:

> 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

Gut gemacht, Aacini! ** ';)' ** Ops, du bist _nicht_ Aacini! Gut gemacht, jedenfalls ... Ich würde nur den vollen 'Monat' Namen für das Array verwenden, um klarer zu sein. – Aacini

+0

vielen dank! – user396123

+0

lopings, wenn ich versuchte, diese von meinem c: \ users \ public Speicherort auszuführen, wird UNC-Pfad nicht unterstützt. Ich muss es von einem freigegebenen Netzwerkstandort ausführen. Wie behebt man das? – user396123

Verwandte Themen