Показать полную графическую версию : [решено] Многократное копирование нескольких файлов и нумерация копий.
Metallor
01-01-2016, 20:38
Здравствуйте, помогите пожалуйста в решении следующей проблемы:
В папке находятся файлы
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
Попробуйте так:@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
Целевая папка задаётся аргументом пакетного файла (также можно просто перетянуть целевую папку на пакетный файл в Проводнике).
Metallor
01-01-2016, 22:00
К сожалению, мной не совсем точно был описан процесс, не был учтен один нюанс, вследствие чего желаемый результат все-таки не был достигнут(
Каждый файл необходимо скопировать не 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
@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
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
Metallor
02-01-2016, 09:57
Спасибо. Теперь все получилось :jump2: :up2: :jump2:
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.