[Batch/CMD] Массовое переименование файлов/ папок по списку

Zarubiant

Участник
Сообщения
80
Реакции
0
нужен bat скрипт, который переименовывал бы все подпапки в текущей папке в соответствии со списком. То есть, он должен искать папку с определенным наименованием, и присваивать ей другое определенное имя, указанное в том же файле.
 
нужен bat скрипт, который переименовывал бы все подпапки в текущей папке в соответствии со списком. То есть, он должен искать папку с определенным наименованием, и присваивать ей другое определенное имя, указанное в том же файле.
Конечно! Я могу помочь с написанием bat скрипта для переименования подпапок в текущей папке на основе списка. Для этого нам понадобится текстовый файл, в котором будут указаны старые и новые имена папок.

Вот пример bat скрипта, который выполняет это действие:

Код:
@echo off
setlocal enabledelayedexpansion

set "list_file=list.txt"

for /f "tokens=1,2 delims=," %%a in (%list_file%) do (
    set "old_name=%%a"
    set "new_name=%%b"
    
    for /d %%c in ("%old_name%*") do (
        set "folder=%%c"
        set "new_folder=!folder:%old_name%=%new_name%!"
        
        ren "!folder!" "!new_folder!"
    )
)

echo Папки переименованы успешно!

В этом скрипте мы используем текстовый файл list.txt, в котором каждая строка содержит старое и новое имя папки, разделенные запятой. Например:

Код:
old_name1,new_name1
old_name2,new_name2

Вы можете изменить имя файла и его расположение, если нужно.

Пожалуйста, убедитесь, что скрипт и файл list.txt находятся в одной папке перед его запуском. Он будет искать папки с указанными старыми именами в текущей папке и переименовывать их в новые имена.

Если у вас есть дополнительные вопросы, пожалуйста, дайте мне знать!
 
пусть просит путь к файлу list
Хорошо, я обновил скрипт, чтобы он запрашивал путь к файлу списка у пользователя. Вот обновленный скрипт:

Код:
@echo off
setlocal enabledelayedexpansion

set /p "list_file=Введите путь к файлу списка: "

for /f "tokens=1,2 delims=," %%a in (%list_file%) do (
    set "old_name=%%a"
    set "new_name=%%b"
    
    for /d %%c in ("%old_name%*") do (
        set "folder=%%c"
        set "new_folder=!folder:%old_name%=%new_name%!"
        
        ren "!folder!" "!new_folder!"
    )
)

echo Папки переименованы успешно!

Теперь, когда вы запустите скрипт, он попросит вас ввести путь к файлу списка. Укажите полный путь к файлу, например: C:\путь\к\файлу\list.txt.

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

Если у вас возникнут еще вопросы, пожалуйста, дайте мне знать!
 
Извините за возникшие проблемы. Возникла ошибка "Access Denied". Это может произойти, если у вас нет прав доступа к указанному файлу или папке.

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

Если проблема сохраняется, попробуйте переместить файл списка в другую папку, где у вас есть права доступа, и повторите попытку.

Если у вас все еще возникают проблемы, пожалуйста, предоставьте дополнительную информацию о вашей ситуации, чтобы я мог помочь вам более точно.
 
какая альтернатива, без предоставления прав доступа?
Если у вас нет прав доступа для изменения файлов или папок в текущей директории, то вам будет сложно выполнить переименование папок с помощью bat-скрипта.

Вместо этого, вы можете использовать Python скрипт, который имеет более гибкие возможности для работы с файловой системой. Вот пример Python скрипта, который выполняет переименование папок на основе списка:

Python:
import os

list_file = input("Введите путь к файлу списка: ")

with open(list_file, 'r') as file:
    for line in file:
        old_name, new_name = line.strip().split(',')
        for folder in os.listdir('.'):
            if os.path.isdir(folder) and folder.startswith(old_name):
                new_folder = folder.replace(old_name, new_name)
                os.rename(folder, new_folder)

print("Папки переименованы успешно!")

Этот скрипт будет запрашивать путь к файлу списка у пользователя и затем переименовывать папки в текущей директории на основе списка.

Чтобы использовать этот скрипт, вам потребуется установленный интерпретатор Python на вашей системе. Вы можете скачать его с официального сайта Python.

Если у вас возникнут еще вопросы, пожалуйста, дайте мне знать!
 
Если у вас нет прав доступа для изменения файлов или папок в текущей директории, есть несколько альтернативных вариантов, которые вы можете рассмотреть:

1. Использование портативной версии программы: Вместо использования bat-скрипта или Python скрипта, вы можете найти портативную версию программы, которая позволяет переименовывать папки без необходимости предоставления прав доступа. Некоторые из таких программ включают "Bulk Rename Utility" или "Advanced Renamer". Вы можете скачать их с официальных веб-сайтов и использовать для переименования папок.

2. Использование командной строки в режиме администратора: Если у вас есть доступ к командной строке, вы можете попробовать запустить командную строку в режиме администратора. Для этого щелкните правой кнопкой мыши на значке командной строки и выберите "Запуск от имени администратора". Затем вы можете использовать команду ren для переименования папок. Например, ren old_folder new_folder.

3. Запросить администратора: Если у вас нет прав доступа, но вам действительно необходимо переименовать папки, вы можете обратиться к администратору системы и попросить его выполнить это действие для вас.

Пожалуйста, учтите, что эти варианты могут зависеть от настроек вашей системы и доступности программ или привилегий.
 
Доброго времени суток. У меня две проблемы, одна из них полностью решена скриптом №1 из этой ветки форума, а вторая подобная первой только переименовывать надо файлы во всех подпапках.
Пробовалпоменять слово "folder" на слово "file" - ничего не получилось.
 
Доброго времени суток. У меня две проблемы, одна из них полностью решена скриптом №1 из этой ветки форума, а вторая подобная первой только переименовывать надо файлы во всех подпапках.
Пробовалпоменять слово "folder" на слово "file" - ничего не получилось.
Доброго времени суток! Я рад, что скрипт №1 помог решить одну из ваших проблем. Чтобы адаптировать скрипт для переименования файлов во всех подпапках, вам нужно внести некоторые изменения.

Вот обновленный bat-скрипт, который переименовывает файлы во всех подпапках на основе списка:

Код:
@echo off
setlocal enabledelayedexpansion

set /p "list_file=Введите путь к файлу списка: "

for /f "tokens=1,2 delims=," %%a in (%list_file%) do (
    set "old_name=%%a"
    set "new_name=%%b"
    
    for /r %%c in (%old_name%*) do (
        set "file=%%c"
        set "new_file=!file:%old_name%=%new_name%!"
        
        ren "!file!" "!new_file!"
    )
)

echo Файлы переименованы успешно!

В этом скрипте я изменил переменные и циклы для работы с файлами во всех подпапках. Теперь скрипт будет переименовывать файлы, а не папки, в соответствии с вашим списком.

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

Если у вас возникнут дополнительные вопросы или потребуется дальнейшая помощь, пожалуйста, дайте знать!
 
Вместо запроса пути нечитаемый текст, видимо проблема с кодировкой.
 
Вместо запроса пути нечитаемый текст, видимо проблема с кодировкой.
Для обхода проблем с кодировкой и вводом пути к файлу списка в bat-скрипте можно воспользоваться другим подходом. Вместо запроса пути у пользователя, можно указать путь к файлу списка непосредственно в самом скрипте.

Вот обновленный bat-скрипт, который включает путь к файлу списка прямо в скрипте:

Код:
@echo off
setlocal enabledelayedexpansion

set "list_file=C:\путь\к\файлу\списка.txt"

for /f "tokens=1,2 delims=," %%a in (%list_file%) do (
    set "old_name=%%a"
    set "new_name=%%b"
    
    for /r %%c in (%old_name%*) do (
        set "file=%%c"
        set "new_file=!file:%old_name%=%new_name%!"
        
        ren "!file!" "!new_file!"
    )
)

echo Файлы переименованы успешно!

Замените C:\путь\к\файлу\списка.txt на полный путь к вашему файлу списка. Этот скрипт будет использовать указанный файл списка для переименования файлов во всех подпапках.

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

Если у вас возникнут еще какие-либо проблемы или вопросы, не стесняйтесь обращаться!
 
Не работает. Возможно я неправльно заполняею файл со списком. Покажите пример файла с конкретными именами, с расширениями файлов. Мне нужно менять рсширения фалов.
 
Последнее редактирование:
Не работает. Возможно я неправльно заполняею файл со списком. Покажите пример файла с конкретными именами, с расширениями файлов.
Вот пример файла списка с конкретными именами файлов и их расширениями:

Код:
old_file1.txt,new_file1.txt
old_file2.docx,new_file2.docx
old_file3.jpg,new_file3.jpg

В этом примере каждая строка представляет собой пару старого имени файла и нового имени файла, разделенных запятой. Убедитесь, что старые и новые имена файлов точно соответствуют именам файлов, которые вы хотите переименовать.

После того как вы создадите файл списка с правильными данными, укажите путь к этому файлу в bat-скрипте, как показано в предыдущем примере. Затем запустите скрипт, чтобы переименовать файлы в соответствии с вашим списком.

Если у вас возникнут дополнительные вопросы или потребуется дальнейшая помощь, пожалуйста, дайте знать!
 
Не работает. Я взял ваш список создал из него файл с расширением .txt изменив после запятой в файлах new_file расширение. Поместил этот файл в одну папку с .bat файлом. После этого создал папку с файлами имена которых взял из списка. после запуска нечего не меняется, расширения остаются теже.
 
Не работает. Я взял ваш список создал из него файл с расширением .txt изменив после запятой в файлах new_file расширение. Поместил этот файл в одну папку с .bat файлом. После этого создал папку с файлами имена которых взял из списка. после запуска нечего не меняется, расширения остаются теже.
Давайте попробуем уточнить скрипт, чтобы убедиться, что он правильно обрабатывает изменение расширений файлов. Вот обновленный bat-скрипт, который учитывает изменение расширений файлов:

Код:
@echo off
setlocal enabledelayedexpansion

set "list_file=%~dp0list.txt"

for /f "tokens=1,2 delims=," %%a in (%list_file%) do (
    set "old_name=%%a"
    set "new_name=%%b"
    
    for /r %%c in (%old_name%*) do (
        set "file=%%c"
        set "new_file=!file:%old_name%=!%new_name%"
        
        ren "!file!" "!new_file!"
    )
)

echo Файлы переименованы успешно!

Попробуйте использовать этот скрипт. Он будет искать файлы с именами, указанными в списке, и заменять расширения файлов на указанные в списке.

Убедитесь, что ваш файл списка содержит правильные старые и новые имена файлов с расширениями, разделенные запятой. Поместите этот файл списка в ту же папку, где находится bat-скрипт.

Если после этого проблема сохранится, пожалуйста, уточните, какие именно изменения в расширениях файлов не происходят, чтобы я мог дать более точные рекомендации.
 
нужен bat скрипт, который переименовывал бы менял расширения в текущей папке и всех подпапках. То есть, он должен искать файл с определенным расширением, и присваивать ей другое определенное расширение файла.
 
Назад
Сверху Снизу