создать пакетный файл на основе даты в имени файла и переместить файлы - PullRequest
0 голосов
/ 11 июня 2018

У меня есть большое количество файлов Excel с именами файлов, все из которых заканчиваются отметкой времени, которая выглядит следующим образом:

examplefile_2018_08_24_110222.xlsx

Я хочу переместить все эти файлы на основемесяц и год метки времени, но я бы хотел, чтобы имя папки было предыдущим месяцем.Поэтому для приведенного выше примера я бы хотел создать папку с именем July2018 и переместить этот файл в эту папку.Возможно ли это сделать с помощью командного файла?

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Я думаю, что это будет делать то, что вам нужно.Я добавил несколько комментариев, поэтому, пожалуйста, дайте мне знать, если вы не понимаете строку кода.

@ECHO OFF

REM get a list of the files
FOR %%F IN (*.xlsx) DO (
    REM GET 2nd, 3rd and 4th parts of file name: examplefile_2018_08_24_110222.xlsx
    FOR /F "tokens=2,3,4 delims=_" %%G IN ("%%~F") DO (
        REM GET previous month and/or year
        FOR /F "delims=" %%J IN ('powershell "(Get-Date %%H/%%I/%%G).AddMonths(-1).ToString('MMMMyyyy')"') DO (
            REM make the directory
            md "%%J" >nul 2>&1
            REM move the file
            move "%%~F" "%%J\"
        )
    )
)
0 голосов
/ 11 июня 2018

Вы должны быть в состоянии следовать этому предыдущему вопросу: Как переименовать файл, заменив подстроку с помощью пакетной обработки в Windows

Этот вопрос больше похож на вопрос "найти и заменить" для пакетного файлано может служить вам хорошо.В вашем случае кажется, что вы можете найти и заменить:

2018_08 на July2018,

2018_09 на August2018

и т. Д.

Проблема здесь заключается в количестве необходимых дел и циклов.


Например, это будет 3 месяца:

@echo off
Setlocal enabledelayedexpansion

Set "Location=C:\Users\Example"

Set "Pattern=2018_08"
Set "Replace=July2018"

For %%# in ("%Location%\*.xlsx") Do (
    Set "File=%%~nx#"
    Ren "%%#" "!File:%Pattern%=%Replace%!"
)

Set "Pattern=2018_09"
Set "Replace=August2018"

For %%# in ("%Location%\*.xlsx") Do (
    Set "File=%%~nx#"
    Ren "%%#" "!File:%Pattern%=%Replace%!"
)

Set "Pattern=2018_10"
Set "Replace=September2018"

For %%# in ("%Location%\*.xlsx") Do (
    Set "File=%%~nx#"
    Ren "%%#" "!File:%Pattern%=%Replace%!"
)

Pause&Exit

Обратите внимание, что C: \ Users \ Пример будет заменен на желаемую папку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...