Как переименовать все файлы в папке, не начиная с определенной строки префикса?
У меня есть папка, которая содержит, например, следующие файлы:
RAW_123432542_343.text
231453254_213.text
RAW_324324_32432423.text
32432423_4543.text
Что мне нужно, это переименование всех файлов, которые не имеют RAW_
в качестве префикса. В папке тысячи файлов.
Как переименовать все файлы в папке, не начиная с RAW_
?
1 ответ
Это можно сделать, например, с помощью следующего кода партии:
@echo off
setlocal EnableExtensions EnableDelayedExpansion
for %%I in ("C:\Temp\*.text") do (
set "FileName=%%~nI"
if /I not "!FileName:~0,4!" == "RAW_" ren "%%~I" "RAW_%%~nxI"
)
endlocal
Если строка назначена переменной среды внутри блока кода, начинающегося с (
и заканчивая соответствием )
и ссылка на строку или части строки этой переменной среды в том же блоке кода необходима, поскольку для этой операции переименования необходимо использовать отложенное расширение, как показано выше. Помощь команды set
объясняет это простым IF и простым примером FOR очень ясно.
Чтобы понять используемые команды и то, как они работают, откройте окно командной строки, выполните там следующие команды и полностью прочитайте все страницы справки, отображаемые для каждой команды.
echo /?
endlocal /?
for /?
if /?
ren /?
set /?
setlocal /?