Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Многократное копирование нескольких файлов и нумерация копий. (http://forum.oszone.net/showthread.php?t=309862)

Metallor 01-01-2016 20:38 2590398

Многократное копирование нескольких файлов и нумерация копий.
 
Здравствуйте, помогите пожалуйста в решении следующей проблемы:

В папке находятся файлы
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

Iska 01-01-2016 21:35 2590411

Попробуйте так:
Скрытый текст
Код:

@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 2590416

К сожалению, мной не совсем точно был описан процесс, не был учтен один нюанс, вследствие чего желаемый результат все-таки не был достигнут(
Каждый файл необходимо скопировать не 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

Georgio 02-01-2016 03:07 2590448

Код:

@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


Iska 02-01-2016 03:32 2590451

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 2590461

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


Время: 03:42.

Время: 03:42.
© OSzone.net 2001-