[Batch/CMD] Переименование папок а также файлов формата .vmt и .mdl

sviridov_artem

Новый пользователь
Сообщения
39
Реакции
0
Пожалуйста, обращайтесь, если у вас появятся другие вопросы! Я всегда готов помочь.
Здравствуйте, может сможете подсказать. Нужен .bat файл, который помещается в папку, и далее работает только с этой папкой:
1. Найдет и переименуют все папки с названием test1 на test2
2. Найдет файлы формата: .vmt и .mdl , в них найдет тот же test1 и заменит на тот же test2, сохранит

Сможете помочь?
 
Здравствуйте, может сможете подсказать. Нужен .bat файл, который помещается в папку, и далее работает только с этой папкой:
1. Найдет и переименуют все папки с названием test1 на test2
2. Найдет файлы формата: .vmt и .mdl , в них найдет тот же test1 и заменит на тот же test2, сохранит

Сможете помочь?
Конечно, я могу помочь с созданием такого .bat файла. Вот пример скрипта, который будет выполнять указанные вами действия:

CMD/BATCH:
@echo off
setlocal enabledelayedexpansion

rem Переименование папок
for /d %%d in (test1*) do (
    set "folder=%%~nd"
    set "new_folder=!folder:test1=test2!"
    ren "%%d" "!new_folder!"
)

rem Поиск и замена в файлах .vmt и .mdl
for /r %%f in (*.vmt *.mdl) do (
    set "file=%%~nf"
    set "new_file=!file:test1=test2!"
    for /f "usebackq tokens=*" %%l in ("%%f") do (
        set "line=%%l"
        setlocal enabledelayedexpansion
        set "line=!line:test1=test2!"
        echo !line! >> "%%~dpf!new_file!%%~xf"
        endlocal
    )
)

echo Готово!

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

Скрипт начинается с переименования папок. Он ищет все папки, название которых начинается с "test1", и заменяет "test1" на "test2" в названии каждой папки.

Затем скрипт переходит к поиску и замене в файлах .vmt и .mdl. Он обходит все файлы с расширениями .vmt и .mdl в текущей папке и всех вложенных папках. Для каждого файла он читает каждую строку и выполняет замену "test1" на "test2" в каждой строке. Затем он записывает измененную строку в новый файл с тем же именем, но с добавлением "test2" в название файла.

После выполнения скрипта вы увидите сообщение "Готово!".

Обратите внимание, что этот скрипт не делает резервную копию файлов перед изменением. Убедитесь, что у вас есть резервная копия важных файлов перед запуском скрипта.
 
Не работает, к сожалению.
1. Не меняет название папок.
2. Не меняет в файлах.
Приношу извинения за предоставленный скрипт. Вот исправленная версия, которая должна работать правильно:

CMD/BATCH:
@echo off
setlocal enabledelayedexpansion

rem Переименование папок
for /d %%d in (test1*) do (
    set "folder=%%~nd"
    set "new_folder=!folder:test1=test2!"
    ren "%%d" "!new_folder!"
)

rem Поиск и замена в файлах .vmt и .mdl
for /r %%f in (*.vmt *.mdl) do (
    set "file=%%~nf"
    set "new_file=!file:test1=test2!"
    set "temp_file=%%~dpnf.tmp"
    (
        for /f "usebackq tokens=*" %%l in ("%%f") do (
            set "line=%%l"
            setlocal enabledelayedexpansion
            set "line=!line:test1=test2!"
            echo !line!
            endlocal
        )
    ) > "!temp_file!"
    move /y "!temp_file!" "%%~dpnf%%~xf"
)

echo Готово!

Пожалуйста, попробуйте эту исправленную версию. Она должна корректно переименовывать папки и выполнять замену в файлах .vmt и .mdl. После выполнения скрипта вы увидите сообщение "Готово!".

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

CMD/BATCH:
@echo off
setlocal enabledelayedexpansion

rem Переименование папок
for /d %%d in (test1*) do (
    set "folder=%%~nd"
    set "new_folder=!folder:test1=test2!"
    ren "%%d" "!new_folder!"
)

rem Поиск и замена в файлах .vmt и .mdl
for /r %%f in (*.vmt *.mdl) do (
    set "file=%%~nf"
    set "new_file=!file:test1=test2!"
    set "temp_file=%%~dpnf.tmp"
    (
        for /f "usebackq tokens=*" %%l in ("%%f") do (
            set "line=%%l"
            setlocal enabledelayedexpansion
            set "line=!line:test1=test2!"
            echo !line!
            endlocal
        )
    ) > "!temp_file!"
    move /y "!temp_file!" "%%~dpnf%%~xf"
)

echo Готово!

Пожалуйста, попробуйте эту исправленную версию. Она должна корректно переименовывать папки и выполнять замену в файлах .vmt и .mdl. После выполнения скрипта вы увидите сообщение "Готово!".

Если у вас все еще возникают проблемы, пожалуйста, уточните, какие ошибки или сообщения об ошибках вы получаете при запуске скрипта. Это поможет мне лучше понять проблему и предоставить дальнейшую помощь.
Файлы меняет, все ок. А название папок не изменяет.
 
Файлы меняет, все ок. А название папок не изменяет.
Приношу извинения за путаницу. Вот исправленная версия скрипта, которая должна правильно переименовывать папки:

CMD/BATCH:
@echo off
setlocal enabledelayedexpansion

rem Переименование папок
for /d %%d in (*) do (
    set "folder=%%~nd"
    set "new_folder=!folder:test1=test2!"
    if not "!folder!"=="!new_folder!" (
        ren "%%d" "!new_folder!"
    )
)

rem Поиск и замена в файлах .vmt и .mdl
for /r %%f in (*.vmt *.mdl) do (
    set "file=%%~nf"
    set "new_file=!file:test1=test2!"
    set "temp_file=%%~dpnf.tmp"
    (
        for /f "usebackq tokens=*" %%l in ("%%f") do (
            set "line=%%l"
            setlocal enabledelayedexpansion
            set "line=!line:test1=test2!"
            echo !line!
            endlocal
        )
    ) > "!temp_file!"
    move /y "!temp_file!" "%%~dpnf%%~xf"
)

echo Готово!

Попробуйте использовать эту исправленную версию скрипта. Она должна правильно переименовывать папки, а также выполнять замену в файлах .vmt и .mdl. После выполнения скрипта вы увидите сообщение "Готово!".

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

CMD/BATCH:
@echo off
setlocal enabledelayedexpansion

rem Переименование папок
for /d %%d in (*) do (
    set "folder=%%~nd"
    set "new_folder=!folder:test1=test2!"
    if not "!folder!"=="!new_folder!" (
        ren "%%d" "!new_folder!"
    )
)

rem Поиск и замена в файлах .vmt и .mdl
for /r %%f in (*.vmt *.mdl) do (
    set "file=%%~nf"
    set "new_file=!file:test1=test2!"
    set "temp_file=%%~dpnf.tmp"
    (
        for /f "usebackq tokens=*" %%l in ("%%f") do (
            set "line=%%l"
            setlocal enabledelayedexpansion
            set "line=!line:test1=test2!"
            echo !line!
            endlocal
        )
    ) > "!temp_file!"
    move /y "!temp_file!" "%%~dpnf%%~xf"
)

echo Готово!

Попробуйте использовать эту исправленную версию скрипта. Она должна правильно переименовывать папки, а также выполнять замену в файлах .vmt и .mdl. После выполнения скрипта вы увидите сообщение "Готово!".

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

CMD/BATCH:
@echo off
setlocal enabledelayedexpansion

rem Переименование папок
for /d %%d in (*) do (
    set "folder=%%~nd"
    set "new_folder=!folder:test1=test2!"
    if not "!folder!"=="!new_folder!" (
        pushd "%%d"
        ren "%%d" "!new_folder!"
        popd
    )
)

rem Поиск и замена в файлах .vmt и .mdl
for /r %%f in (*.vmt *.mdl) do (
    set "file=%%~nf"
    set "new_file=!file:test1=test2!"
    set "temp_file=%%~dpnf.tmp"
    (
        for /f "usebackq tokens=*" %%l in ("%%f") do (
            set "line=%%l"
            setlocal enabledelayedexpansion
            set "line=!line:test1=test2!"
            echo !line!
            endlocal
        )
    ) > "!temp_file!"
    move /y "!temp_file!" "%%~dpnf%%~xf"
)

echo Готово!

Попробуйте использовать эту исправленную версию скрипта. Она должна правильно переименовывать папки, а также выполнять замену в файлах .vmt и .mdl. После выполнения скрипта вы увидите сообщение "Готово!".

Если у вас все еще возникают проблемы, пожалуйста, уточните, какие ошибки или сообщения об ошибках вы получаете при запуске скрипта. Это поможет мне лучше понять проблему и предоставить дальнейшую помощь.
 
@echo off
setlocal disableDelayedExpansion
set "old=test1"
set "new=test2"
for /f "delims=" %%F in ('dir /b /s *. *.ods ^| sort /r') do (
set "source=%%F"
set "oldname=%%~nxF"
setlocal enableDelayedExpansion
set "newname=!oldname:%old%=%new%!"
if /i "!newname!" neq "!oldname!" (
echo ren "!source!" "!newname!"
ren "!source!" "!newname!"
)
endlocal
)

Все так же не работает.
Вот подобный код и он работает, но не полноценно.
Может он поможет, чем то.
 
Все так же не работает.
Вот подобный код и он работает, но не полноценно.
Может он поможет, чем то.
Приношу извинения за предыдущие проблемы. Вот исправленная версия скрипта, которая должна правильно переименовывать папки и выполнять замену в файлах .vmt и .mdl:

CMD/BATCH:
@echo off
setlocal enabledelayedexpansion

rem Переименование папок
for /d /r %%d in (*) do (
    set "folder=%%~nd"
    set "new_folder=!folder:test1=test2!"
    if not "!folder!"=="!new_folder!" (
        pushd "%%~dpd"
        ren "%%~nxd" "!new_folder!"
        popd
    )
)

rem Поиск и замена в файлах .vmt и .mdl
for /r %%f in (*.vmt *.mdl) do (
    set "file=%%~nf"
    set "new_file=!file:test1=test2!"
    set "temp_file=%%~dpnf.tmp"
    (
        for /f "usebackq tokens=*" %%l in ("%%f") do (
            set "line=%%l"
            setlocal enabledelayedexpansion
            set "line=!line:test1=test2!"
            echo !line!
            endlocal
        )
    ) > "!temp_file!"
    move /y "!temp_file!" "%%~dpnf%%~xf"
)

echo Готово!

Попробуйте использовать эту исправленную версию скрипта. Она должна правильно переименовывать папки и выполнять замену в файлах .vmt и .mdl. После выполнения скрипта вы увидите сообщение "Готово!".

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