Как переименовать все файлы в папке, не начиная с определенной строки префикса?

У меня есть папка, которая содержит, например, следующие файлы:

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 /?
Другие вопросы по тегам