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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Многократное копирование нескольких файлов и нумерация копий.

Ответить
Настройки темы
CMD/BAT - [решено] Многократное копирование нескольких файлов и нумерация копий.

Новый участник


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

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


Здравствуйте, помогите пожалуйста в решении следующей проблемы:

В папке находятся файлы
First.mp3
Second.mp3
Third.mp3
Fourth.mp3

Необходимо скопировать каждый файл несколько раз и пронумеровать копии(при этом исходные файлы надо удалить), чтобы содержимое папки приобрело такой вид:
First_0001.mp3
First_0002.mp3
First_0003.mp3
Second_0001.mp3
Second_0002.mp3
Second_0003.mp3
Third_0001.mp3
Third_0002.mp3
Third_0003.mp3
Fourth_0001.mp3
Fourth_0002.mp3
Fourth_0003.mp3

Отправлено: 20:38, 01-01-2016

 

Ветеран


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

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


Попробуйте так:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=%~1

if defined sSourceFolder (
	if exist "%sSourceFolder%\." (
		pushd "%sSourceFolder%"
		
		for /f "usebackq delims=" %%i in (
			`2^>nul dir /b /a:-d "*.mp3"`
		) do (
			for /l %%j in (1, 1, 3) do >nul copy "%%~i" "%%~ni_000%%j%%~xi"
			del /f /q "%%~i"
		)
		
		popd
	) else (
		echo Can't find source folder [%sSourceFolder%].
		exit /b 2
	)
) else (
	echo Usage: %~nx0 ^<Source folder^>
	exit /b 1
)

endlocal
exit /b 0
Целевая папка задаётся аргументом пакетного файла (также можно просто перетянуть целевую папку на пакетный файл в Проводнике).

Отправлено: 21:35, 01-01-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


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

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


К сожалению, мной не совсем точно был описан процесс, не был учтен один нюанс, вследствие чего желаемый результат все-таки не был достигнут(
Каждый файл необходимо скопировать не 3 раза, как в приведенном мной примере, а несколько (свыше ста раз), т.е. чтобы содержимое папки приобрело такой вид:
Скрытый текст
First_0001.mp3
First_0002.mp3
........................
First_0101.mp3
Second_0001.mp3
Second_0002.mp3
........................
Second_0101.mp3
Third_0001.mp3
Third_0002.mp3
........................
Third_0101.mp3
Fourth_0001.mp3
Fourth_0002.mp3
........................
Fourth_0101.mp3

Сейчас же получается вот так:
Скрытый текст
First_0001.mp3
First_0002.mp3
........................
First_000101.mp3
Second_0001.mp3
Second_0002.mp3
........................
Second_000101.mp3
Third_0001.mp3
Third_0002.mp3
........................
Third_000101.mp3
Fourth_0001.mp3
Fourth_0002.mp3
........................
Fourth_000101.mp3

Последний раз редактировалось Metallor, 02-01-2016 в 01:46.


Отправлено: 22:00, 01-01-2016 | #3


Ветеран


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

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


Код: Выделить весь код
@echo off

set n=101

2>nul cmd/v/c ">nul set/a x=1^0000+n& for /f "delims=" %%i in ('dir/a-d/b "%~1\*.mp3"') do @(for /l %%j in (1^0001 1 !x!) do @set y=%%j& copy "%~1\%%i" "%~1\%%~ni_!y:~1!%%~xi")& del/a/f "%~1\%%i""

exit/b
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:07, 02-01-2016 | #4


Ветеран


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

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


Metallor, тогда попробуйте так:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=%~1
set /a iCount = 101

if defined sSourceFolder (
	if exist "%sSourceFolder%\." (
		pushd "%sSourceFolder%"
		
		for /f "usebackq delims=" %%i in (
			`2^>nul dir /b /a:-d "*.mp3"`
		) do (
			for /l %%j in (1, 1, %iCount%) do (
				set sTemplate=0000%%j
				echo [%%~i] ---^> [%%~ni_!sTemplate:~-4!%%~xi]
				>nul copy "%%~i" "%%~ni_!sTemplate:~-4!%%~xi"
			)
			del /f /q "%%~i"
		)
		
		popd
	) else (
		echo Can't find source folder [%sSourceFolder%].
		exit /b 2
	)
) else (
	echo Usage: %~nx0 ^<Source folder^>
	exit /b 1
)

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:32, 02-01-2016 | #5


Новый участник


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

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


Спасибо. Теперь все получилось

Отправлено: 09:57, 02-01-2016 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Многократное копирование нескольких файлов и нумерация копий.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочие - Запуск нескольких копий приложений. pauz Программное обеспечение Windows 0 14-08-2015 11:31
CMD/BAT - Копирование нескольких файлов из папки в другую с прошедшей датой salmans Скриптовые языки администрирования Windows 5 06-08-2013 03:01
Разное - Запуск нескольких копий Программы просмотра изображений и факсов Dabaduch Microsoft Windows 2000/XP 1 09-03-2009 17:34
Интернет - Многократное копирование процесса EXPLORER.EXE w1nux Лечение систем от вредоносных программ 4 15-12-2008 12:55
запуск нескольких копий одной программы через командную строку XqlpX Хочу все знать 3 19-11-2008 13:48




 
Переход