2016-08-18 2 views
-4

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

RAW_123432542_343.text 
231453254_213.text 
RAW_324324_32432423.text 
32432423_4543.text 

Что мне нужно будет переименовать все файлы, которые не имеют RAW_ как префикс. Папка имеет тысячи файлов.

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

+1

Существует аналогичный вопрос, который может вам помочь: http://superuser.com/questions/699711/rename-multiple-files-exclude-pattern – Freddy

+0

StackOverflow не является бесплатной службой написания кода, поэтому вам нужно показать ваши собственные усилия, если вы ожидаете помощи. Пожалуйста, наклоните [как спросить] (http://stackoverflow.com/help/how-to-ask)! – aschipfl

+0

Обратите внимание: https://stackoverflow.com не является бесплатной службой написания сценариев/кодов. Если вы сообщите нам, что вы пробовали до сих пор (включая скрипты/код, который вы уже используете), и где вы застряли, мы можем попытаться помочь с конкретными проблемами. Вы также должны прочитать [Как задать хороший вопрос?] (Https://stackoverflow.com/help/how-to-ask). – DavidPostill

ответ

0

Это может быть сделано, например, с следующим периодическим кодом:

@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 /?
+0

tnx много .. это решает мою проблему .. – Alain

+0

Я пробовал что-то 'if/I '! FileName: ~ 0,4!" == "RAW_" ren "%% ~ I" "! FileName: ~ 4!" 'Но он только переименовывает файлы первого типа .. и он удаляет расширения – Alain

+0

Вам нужна командная строка' if/I '! FileName: ~ 0,4!» == "RAW_" ren "%% ~ I" "! FileName: ~ 4! %% ~ xI", если вы хотите сделать обратное и переименовать файлы с помощью RAW_ в любом случае в начале * имени файла * удаление 'RAW_' из * имени файла *. Строка, назначенная переменной окружения 'FileName',' '%% ~ nI" ', которая не является __name файла__ (имя файла + расширение файла), а просто * имя файла * без расширения файла.Разумеется, вы можете назначить переменной также «%% ~ nxI», потому что тогда над пакетным скриптом, а также вашим условием __IF__ для противоположного будет работать оба. – Mofi

Смежные вопросы