Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2715
Благодарности: 1688

Профиль | Отправить PM | Цитировать


Iska, Кто хочет сделать - ищет способ, кто не хочет - причину.
Вот вариант (скрипт 1)
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Box_In"
	Set "Folds="1111" "2222""

	Set "Pref=check"
	Set "Mask=%Pref%*.*"
	Set /A Max=1000
	
	Set "BoxOut=Z:\Box_In\Total"

	If Not Exist "%BoxOut%" Md "%BoxOut%"
	
	Pushd "%BoxIn%" &&(
		FOR %%d IN (%Folds%) DO (
			FOR %%f IN ("%%~dpnxd\%Mask%") DO (
				Call :RenCopy "_%%~d" "%%f" "%%~nf" "%%~xf" "%BoxOut%"
			)
		)
		Popd
	)
Pause
GoTo :Eof

:RenCopy
	Set "NewName=%~3"
	Call Set "NewName=%%NewName:%Pref%=%%"
	2>nul Set /A NewName=%NewName%+%Max% ||GoTo :Eof
	Set "NewName=%Pref%%NewName:~1%%~1%~4"
	>nul Copy %2 "%~5\%NewName%"
	>nul Ren %2 "%NewName%" 
GoTo :Eof
Как я понимаю, имена папок и файлов в вопросе условны.
Главное, чтобы выдерживалось правило образования имени : ПрефиксНомерРасширение. Расширение может и отсутствовать, тогда:
Set "Mask=%Pref%*."
Предполагаю, что обе подпапки находятся в общей папке. Имена корневой папки, подпапок, выходной папки укажите сами. Кстати, число подпапок в моём решении произвольно, извольте их перечислить.
Укажите префикс в именах файлов, в Вашем вопросе он check
Можно задать формат номера в новом имени.
Для Max=1000 номер будет трёхзначным, например, 001
Для Max=10000 номер будет четырёхзначным, например, 0002
В выходную папку копируются файлы с новым именем.
В исходной папке файлы переименовываются.
Если не надо, чтобы переименовывались файлы в исходной папке, уберите строку с ren


-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 18-08-2018 в 18:54.


Отправлено: 14:19, 17-08-2018 | #6