Я думаю, что нет способа выполнить вашу задачу с помощью одной ren
командной строки.
Вы можете написать пакетный файл со следующим кодом и назвать его ren_date.bat
:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
rem // Define constants here:
set "_ROOT=." & rem // (root directory; `.` is current, `%~dp0.` is parent)
set "_FROM=%~1" & rem // (name portion to be replaced; `%~1` is 1st argument)
set "_TO=%~2" & rem // (name portion to be inserted; `%~2` is 2st argument)
rem // Enumerate all matching files (note the SPACE behind the asterisk):
for /F "delims=| eol=|" %%J in ('dir /B /A:-D "%_ROOT%\* %_FROM%*.xlsx"') do (
rem // Store current file name, initialise variable for new name:
set "FILE=%%J" & set "NAME="
rem // Toggle delayed expansion to avoid loss of exclamation marks:
setlocal EnableDelayedExpansion
rem /* Replace each SPACE in current file name by `" "` and enclose the
rem whole string in between `""`, so we get a list of quoted items,
rem which reflect all the SPACE-separated file name parts: */
for %%I in ("!FILE: =" "!") do (
endlocal
rem // Store current file name part:
set "PART=%%~I"
setlocal EnableDelayedExpansion
rem /* Assemble new name, performing the intended substitution of the
rem predefined sub-strings; the `for /F` loop is needed to transport
rem the resulting new file name over the `endlocal` barrier: */
for /F "delims=| eol=|" %%K in ("!NAME! !PART:%_FROM%=%_TO%!") do (
endlocal
rem // Store the assembled name portion:
set "NAME=%%K"
setlocal EnableDelayedExpansion
)
)
rem // Now rename file to the assembled new name:
ren "!_ROOT!\!FILE!" "!NAME:~1!"
endlocal
)
endlocal
exit /B
Затем запустите его в cmd
, используя следующие командные строки, учитывая, что вы находитесь в каталоге, содержащем файлы для переименования:
ren_date.bat "Oct'18" "Nov'18"
Ссылаясь на пример из мой ответна ваш предыдущий вопрос , это должно переименовать файлы:
and some pears Oct'18_xyz.xlsx
apples Oct'18.xlsx
bananas Oct'18.xlsx
more fruit Oct'18_xyz.xlsx
oranges Oct'18.xlsx
plus peaches Oct'18_xyz.xlsx
strawberries Oct'18 abcdef.xlsx
На эти:
and some pears Nov'18_xyz.xlsx
apples Nov'18.xlsx
bananas Nov'18.xlsx
more fruit Nov'18_xyz.xlsx
oranges Nov'18.xlsx
plus peaches Nov'18_xyz.xlsx
strawberries Nov'18 abcdef.xlsx
(Я полагаю, что записать приведенный выше код в командную строку непосредственно в cmd
невозможно, особенно из-за переключения отложенного расширения для обеспечения безопасности кода.)