Дополнительная литература:

Дополнительная литература:

У меня есть папка с файлами, где названия файлов — даты. Мне нужно изменить названия файлов с mm-dd-yyyy.eXtensionна yyyy-mm-dd.eXtension.

Вот что у меня сейчас есть:

03-31-2019.txt
03-31-2020.txt
03-31-2021.txt
03-31-2022.txt

Вот что требуется:

2019-03-31.txt
2020-03-31.txt
2021-03-31.txt
2022-03-31.txt

Я понимаю renфункцию, но не уверен, как массово переименовать их все в отдельные имена, которые происходят от исходного имени. Я поискал и нашел больше помощи с простой renфункцией, но ничего, чтобы просто переупорядочить имя.

Ниже приведены некоторые моменты, которые, как я обнаружил, помогли мне renи дали дополнительные идеи, но все равно это не то, что мне нужно.

Как переименовать файлы в командной строке Windows cmd?
Пакетная программа для переименования файла, в имени которого есть пробелы?

решение1

Для этого было бы проще использовать стороннее программное обеспечение с графическим интерфейсом.

Продукт типа «швейцарский нож», который вы можете использовать, является бесплатным Утилита массового переименования который может выполнять практически все операции любого типа.

Вот это на ваших данных с использованием регулярных выражений:

введите описание изображения здесь

решение2

Вы можете использовать строковую манипуляцию переменной и определить макет имени в соответствии с желаемой перегруппировкой подстрок:

1.echo.Date   : %date%  
2.echo.Weekday: %date:~0,3%  
3.echo.Month  : %date:~4,2%  
4.echo.Day    : %date:~7,2%  
5.echo.Year   : %date:~10,4%  

введите описание изображения здесь


@echo off 

for %%i in (??-*.txt)do set "_n=%%~ni" && =;(
    %ComSpec% /v /c "ren "%%~i" !_n:~6,4!-!_n:~0,2!!_n:~2,3!%%~xi" );=

  • Чтобы обойти разные файлы, а не только/исключительно в .txteXtension, и в случае запуска в той же папке, игнорируя применение к .batсамому себе, не используйте "-"в имени bat и попробуйте этот цикл:
@echo off 

for /f delims^= %%i in ('dir /a:a /b *-*.*')do set "_n=%%~ni" && =;(
    %ComSpec% /v /c "ren "%%~i" !_n:~6,4!-!_n:~0,2!!_n:~2,3!%%~xi" );=

Для изолированного тестового предложения можно создать папку и запустить этот bat в этой папке, где можно будет создавать файлы для тестирования в одноименном макете и контролировать/визуализировать использование манипуляций с использованием подстрок:

@echo off 

:: Deleting/creating files for testing ::
cd /d "%~dp0" && 2>nul del /q /a .\*.txt
for %%i in (19,20,21,22)do cd.>03-31-20%%~i.txt

for /f delims^= %%i in ('dir /a:a /b *-*.*')do set "_n=%%~ni" & echo\ &&  =;(
    %ComSpec% /v /c "echo\// Original file name.eXtension = !_n!%%~xi"
    %ComSpec% /v /c "ren "%%~i" !_n:~6,4!-!_n:~0,2!!_n:~2,3!%%~xi" 
    %ComSpec% /v /c "echo\variable index from 6 get 4 places == !_n:~6,4!"
    %ComSpec% /v /c "echo\variable index from 0 get 2 places == !_n:~0,2!"
    %ComSpec% /v /c "echo\variable index from 2 get 3 places == !_n:~2,3!"
    %ComSpec% /v /c "echo\and put back original file eXtension == %%~xi"
    %ComSpec% /v /c "echo\// File renamed to: !_n:~6,4!-!_n:~0,2!!_n:~2,3!%%~xi" );=
  • Выходы:
// Original file name.eXtension = 03-31-2019.txt
variable index from 6 get 4 places == 2019
variable index from 0 get 2 places == 03
variable index from 2 get 3 places == -31
and put back original file eXtension == .txt
// File renamed to: 2019-03-31.txt

// Original file name.eXtension = 03-31-2020.txt
variable index from 6 get 4 places == 2020
variable index from 0 get 2 places == 03
variable index from 2 get 3 places == -31
and put back original file eXtension == .txt
// File renamed to: 2020-03-31.txt

// Original file name.eXtension = 03-31-2021.txt
variable index from 6 get 4 places == 2021
variable index from 0 get 2 places == 03
variable index from 2 get 3 places == -31
and put back original file eXtension == .txt
// File renamed to: 2021-03-31.txt

// Original file name.eXtension = 03-31-2022.txt
variable index from 6 get 4 places == 2022
variable index from 0 get 2 places == 03
variable index from 2 get 3 places == -31
and put back original file eXtension == .txt
// File renamed to: 2022-03-31.txt

Дополнительная литература:

Связанный контент