Здравствуйте, может сможете подсказать. Нужен .bat файл, который помещается в папку, и далее работает только с этой папкой:
1. Найдет и переименуют все папки с названием test1 на test2
2. Найдет файлы формата: .vmt и .mdl , в них найдет тот же test1 и заменит на тот же test2, сохранит
Здравствуйте, может сможете подсказать. Нужен .bat файл, который помещается в папку, и далее работает только с этой папкой:
1. Найдет и переименуют все папки с названием test1 на test2
2. Найдет файлы формата: .vmt и .mdl , в них найдет тот же test1 и заменит на тот же test2, сохранит
Конечно, я могу помочь с созданием такого .bat файла. Вот пример скрипта, который будет выполнять указанные вами действия:
CMD/BATCH:
@echo offsetlocal enabledelayedexpansionrem Переименование папокfor/d%%din(test1*)do(set"folder=%%~nd"set"new_folder=!folder:test1=test2!"ren"%%d""!new_folder!")rem Поиск и замена в файлах .vmt и .mdlfor/r%%fin(*.vmt *.mdl)do(set"file=%%~nf"set"new_file=!file:test1=test2!"for/f"usebackq tokens=*"%%lin("%%f")do(set"line=%%l"setlocal enabledelayedexpansionset"line=!line:test1=test2!"echo!line! >> "%%~dpf!new_file!%%~xf"endlocal))echo Готово!
Прежде чем запустить этот скрипт, убедитесь, что он находится в той же папке, где находятся папки, которые нужно переименовать, а также файлы .vmt и .mdl, в которых нужно выполнить замену.
Скрипт начинается с переименования папок. Он ищет все папки, название которых начинается с "test1", и заменяет "test1" на "test2" в названии каждой папки.
Затем скрипт переходит к поиску и замене в файлах .vmt и .mdl. Он обходит все файлы с расширениями .vmt и .mdl в текущей папке и всех вложенных папках. Для каждого файла он читает каждую строку и выполняет замену "test1" на "test2" в каждой строке. Затем он записывает измененную строку в новый файл с тем же именем, но с добавлением "test2" в название файла.
После выполнения скрипта вы увидите сообщение "Готово!".
Обратите внимание, что этот скрипт не делает резервную копию файлов перед изменением. Убедитесь, что у вас есть резервная копия важных файлов перед запуском скрипта.
Приношу извинения за предоставленный скрипт. Вот исправленная версия, которая должна работать правильно:
CMD/BATCH:
@echo offsetlocal enabledelayedexpansionrem Переименование папокfor/d%%din(test1*)do(set"folder=%%~nd"set"new_folder=!folder:test1=test2!"ren"%%d""!new_folder!")rem Поиск и замена в файлах .vmt и .mdlfor/r%%fin(*.vmt *.mdl)do(set"file=%%~nf"set"new_file=!file:test1=test2!"set"temp_file=%%~dpnf.tmp"(for/f"usebackq tokens=*"%%lin("%%f")do(set"line=%%l"setlocal enabledelayedexpansionset"line=!line:test1=test2!"echo!line!endlocal)) > "!temp_file!"
move/y"!temp_file!""%%~dpnf%%~xf")echo Готово!
Пожалуйста, попробуйте эту исправленную версию. Она должна корректно переименовывать папки и выполнять замену в файлах .vmt и .mdl. После выполнения скрипта вы увидите сообщение "Готово!".
Если у вас все еще возникают проблемы, пожалуйста, уточните, какие ошибки или сообщения об ошибках вы получаете при запуске скрипта. Это поможет мне лучше понять проблему и предоставить дальнейшую помощь.
Приношу извинения за предоставленный скрипт. Вот исправленная версия, которая должна работать правильно:
CMD/BATCH:
@echo offsetlocal enabledelayedexpansionrem Переименование папокfor/d%%din(test1*)do(set"folder=%%~nd"set"new_folder=!folder:test1=test2!"ren"%%d""!new_folder!")rem Поиск и замена в файлах .vmt и .mdlfor/r%%fin(*.vmt *.mdl)do(set"file=%%~nf"set"new_file=!file:test1=test2!"set"temp_file=%%~dpnf.tmp"(for/f"usebackq tokens=*"%%lin("%%f")do(set"line=%%l"setlocal enabledelayedexpansionset"line=!line:test1=test2!"echo!line!endlocal)) > "!temp_file!"
move/y"!temp_file!""%%~dpnf%%~xf")echo Готово!
Пожалуйста, попробуйте эту исправленную версию. Она должна корректно переименовывать папки и выполнять замену в файлах .vmt и .mdl. После выполнения скрипта вы увидите сообщение "Готово!".
Если у вас все еще возникают проблемы, пожалуйста, уточните, какие ошибки или сообщения об ошибках вы получаете при запуске скрипта. Это поможет мне лучше понять проблему и предоставить дальнейшую помощь.
Приношу извинения за путаницу. Вот исправленная версия скрипта, которая должна правильно переименовывать папки:
CMD/BATCH:
@echo offsetlocal enabledelayedexpansionrem Переименование папокfor/d%%din(*)do(set"folder=%%~nd"set"new_folder=!folder:test1=test2!"ifnot"!folder!"=="!new_folder!"(ren"%%d""!new_folder!"))rem Поиск и замена в файлах .vmt и .mdlfor/r%%fin(*.vmt *.mdl)do(set"file=%%~nf"set"new_file=!file:test1=test2!"set"temp_file=%%~dpnf.tmp"(for/f"usebackq tokens=*"%%lin("%%f")do(set"line=%%l"setlocal enabledelayedexpansionset"line=!line:test1=test2!"echo!line!endlocal)) > "!temp_file!"
move/y"!temp_file!""%%~dpnf%%~xf")echo Готово!
Попробуйте использовать эту исправленную версию скрипта. Она должна правильно переименовывать папки, а также выполнять замену в файлах .vmt и .mdl. После выполнения скрипта вы увидите сообщение "Готово!".
Если у вас все еще возникают проблемы, пожалуйста, уточните, какие ошибки или сообщения об ошибках вы получаете при запуске скрипта. Это поможет мне лучше понять проблему и предоставить дальнейшую помощь.
Приношу извинения за путаницу. Вот исправленная версия скрипта, которая должна правильно переименовывать папки:
CMD/BATCH:
@echo offsetlocal enabledelayedexpansionrem Переименование папокfor/d%%din(*)do(set"folder=%%~nd"set"new_folder=!folder:test1=test2!"ifnot"!folder!"=="!new_folder!"(ren"%%d""!new_folder!"))rem Поиск и замена в файлах .vmt и .mdlfor/r%%fin(*.vmt *.mdl)do(set"file=%%~nf"set"new_file=!file:test1=test2!"set"temp_file=%%~dpnf.tmp"(for/f"usebackq tokens=*"%%lin("%%f")do(set"line=%%l"setlocal enabledelayedexpansionset"line=!line:test1=test2!"echo!line!endlocal)) > "!temp_file!"
move/y"!temp_file!""%%~dpnf%%~xf")echo Готово!
Попробуйте использовать эту исправленную версию скрипта. Она должна правильно переименовывать папки, а также выполнять замену в файлах .vmt и .mdl. После выполнения скрипта вы увидите сообщение "Готово!".
Если у вас все еще возникают проблемы, пожалуйста, уточните, какие ошибки или сообщения об ошибках вы получаете при запуске скрипта. Это поможет мне лучше понять проблему и предоставить дальнейшую помощь.
Приношу извинения за предоставленные скрипты. Вот исправленная версия, которая должна правильно переименовывать папки:
CMD/BATCH:
@echo offsetlocal enabledelayedexpansionrem Переименование папокfor/d%%din(*)do(set"folder=%%~nd"set"new_folder=!folder:test1=test2!"ifnot"!folder!"=="!new_folder!"(pushd"%%d"ren"%%d""!new_folder!"popd))rem Поиск и замена в файлах .vmt и .mdlfor/r%%fin(*.vmt *.mdl)do(set"file=%%~nf"set"new_file=!file:test1=test2!"set"temp_file=%%~dpnf.tmp"(for/f"usebackq tokens=*"%%lin("%%f")do(set"line=%%l"setlocal enabledelayedexpansionset"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 offsetlocal enabledelayedexpansionrem Переименование папокfor/d/r%%din(*)do(set"folder=%%~nd"set"new_folder=!folder:test1=test2!"ifnot"!folder!"=="!new_folder!"(pushd"%%~dpd"ren"%%~nxd""!new_folder!"popd))rem Поиск и замена в файлах .vmt и .mdlfor/r%%fin(*.vmt *.mdl)do(set"file=%%~nf"set"new_file=!file:test1=test2!"set"temp_file=%%~dpnf.tmp"(for/f"usebackq tokens=*"%%lin("%%f")do(set"line=%%l"setlocal enabledelayedexpansionset"line=!line:test1=test2!"echo!line!endlocal)) > "!temp_file!"
move/y"!temp_file!""%%~dpnf%%~xf")echo Готово!
Попробуйте использовать эту исправленную версию скрипта. Она должна правильно переименовывать папки и выполнять замену в файлах .vmt и .mdl. После выполнения скрипта вы увидите сообщение "Готово!".
Если у вас все еще возникают проблемы, пожалуйста, уточните, какие ошибки или сообщения об ошибках вы получаете при запуске скрипта. Это поможет мне лучше понять проблему и предоставить дальнейшую помощь.