Компьютерный форум 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=348933)

Svnkill 04-06-2021 20:00 2959517

Как скопировать файл много раз и в несколько папок
 
Привет. Какая задача. У меня есть файл его нужно скопировать много раз в несколько папок.
Из папки D:\1 в B:\1 (300 копий) в F:\1 (300 копий) G:\1 (300 копий)
Это можно реалезовать через CMD?

Iska 04-06-2021 20:57 2959522

Можно.

Цитата:

Цитата Svnkill
(300 копий) »

В одном каталоге файлы не могут иметь одно и то же имя. Опишите принцип формирования имён у копий файла.

Svnkill 04-06-2021 23:22 2959525

Цитата:

Цитата Iska
Опишите принцип формирования имён »

Вообще у меня есть TXT в тором хранятся имена которые я собирался потом отдельно переименовать. Хранятся они по пути D:\2 . Если так нельзя то можно просто чтобы имя было 1 2 3 и так далее

Iska 04-06-2021 23:52 2959528

Цитата:

Цитата Svnkill
TXT в тором хранятся имена которые я собирался потом отдельно переименовать. »

txt с тремястами строк, так?

Для первого варианта:
Цитата:

Цитата Svnkill
У меня есть файл его нужно скопировать много раз в несколько папок.
Из папки D:\1 в B:\1 (300 копий) в F:\1 (300 копий) G:\1 (300 копий) »

Скрытый текст
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

rem D:\1\bla-bla-bla.txt
set sSourceFile=%~1

rem B:\1
set sDestFolder1=C:\Мои проекты\0344\0001

rem F:\1
set sDestFolder2=C:\Мои проекты\0344\0002

rem G:\1
set sDestFolder3=C:\Мои проекты\0344\0003

rem (300 копий)
set /a iCount = 12

if defined sSourceFile (
        if exist "%sSourceFile%" (
                for /f "usebackq tokens=1 delims==" %%i in (`set sDestFolder`) do (
                        if exist "!%%i!\." (
                                for /l %%j in (1, 1, %iCount%) do (
                                        echo Copy [%sSourceFile%] into [!%%i!] as [%%~j%~x1]
                                        >nul copy /y "%sSourceFile%" "!%%i!\%%~j.txt"
                                )
                        ) else (
                                echo Can't find destination folder [%%i].
                        )
                        echo.
                )
        ) else (
                echo Source file [%sSourceFile%] not found.
                exit /b 2
        )
) else (
        echo Usage: %~nx0 ^<Source file^>
        exit /b 1
)

endlocal
exit /b 0


Для второго варианта:
Цитата:

Цитата Svnkill
Вообще у меня есть TXT в тором хранятся имена которые я собирался потом отдельно переименовать. »

Скрытый текст
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

rem D:\1\bla-bla-bla.txt
set sSourceFile=%~1

rem у меня есть TXT в тором хранятся имена которые я собирался потом отдельно переименовать
set sNamesFile=%~2

rem B:\1
set sDestFolder1=C:\Мои проекты\0344\0001

rem F:\1
set sDestFolder2=C:\Мои проекты\0344\0002

rem G:\1
set sDestFolder3=C:\Мои проекты\0344\0003

if defined sSourceFile (
        if defined sNamesFile (
                if exist "%sSourceFile%" (
                        if exist "%sNamesFile%" (
                                for /f "usebackq tokens=1 delims==" %%i in (`set sDestFolder`) do (
                                        if exist "!%%i!\." (
                                                for /f "usebackq delims=" %%j in ("%sNamesFile%") do (
                                                        echo Copy [%sSourceFile%] into [!%%i!] as [%%~j]
                                                        >nul copy /y "%sSourceFile%" "!%%i!\%%~j"
                                                )
                                        ) else (
                                                echo Can't find destination folder [%%i].
                                        )
                                        echo.
                                )
                        ) else (
                                echo Names file [%sNamesFile%] not found.
                                exit /b 4
                        )
                ) else (
                        echo Source file [%sSourceFile%] not found.
                        exit /b 3
                )
        ) else (
                echo Usage: %~nx0 ^<Source file^>
                exit /b 2
        )
) else (
        echo Usage: %~nx0 ^<Source file^> ^<Names file^>
        exit /b 1
)

endlocal
exit /b 0


Имена и пути поменяйте на Ваши.

Svnkill 10-06-2021 17:34 2959964

Цитата:

Цитата Iska
Для первого варианта: »

Батник просто закрываетсья, и в первом варианте и во втором

Iska 10-06-2021 21:38 2959987

Svnkill, так и должно быть.

Откройте командную строку (cmd.exe), запустите оттуда пакетный файл и прочитайте, что надо указывать в его параметрах.

Svnkill 12-06-2021 14:50 2960103

Цитата:

Цитата Iska
Откройте командную строку (cmd.exe) »

Тоже самое

DJ Mogarych 12-06-2021 16:57 2960109

powershell
Код:

$file = get-item 'D:\1\file.txt'
for ($c = 1; $c -le 300; $c++) {
cp "$($file.fullname)" "B:\1\$($file.basename)$c$($file.extension)"
cp "$($file.fullname)" "F:\1\$($file.basename)$c$($file.extension)"
cp "$($file.fullname)" "G:\1\$($file.basename)$c$($file.extension)"
}

или CMD принципиально?

Iska 12-06-2021 20:01 2960120

Цитата:

Цитата Svnkill
Тоже самое »

Скриншоты покажите.

greg zakharov 12-06-2021 23:06 2960132

DJ Mogarych явно утомился.
Код:

[void]($$ = gi D:\1\file.txt) && ([Char[]]'BFG').ForEach{[void]($x=$_) && (1..300).ForEach{cp $$ "$($x):\1\$_$($$.Extension)"}}

Svnkill 13-06-2021 16:27 2960159

Цитата:

Цитата DJ Mogarych
powershell »

А чтобы имена из txt Брал?

Цитата:

Цитата Iska
Скриншоты »

как я вставлю код или bat открываю сразу закрываетсяь консоль

Iska 13-06-2021 17:38 2960173

Svnkill, значит, Вы не сделали:
Цитата:

Цитата Iska
Откройте командную строку (cmd.exe), запустите оттуда пакетный файл и прочитайте, что надо указывать в его параметрах. »

хотя пишете об обратном.

DJ Mogarych 13-06-2021 19:46 2960185

Svnkill, выкладывайте txt и описывайте порядок переименования.

Svnkill 13-06-2021 21:13 2960193

Цитата:

Цитата DJ Mogarych
выкладывайте txt »

0x838b07d81d1e3f01db69f86c4e3cec2f902567c1b7836
8fcc2213ae2ff41ca04962cdeb5b086d81772c20039f32f30
396f7f4621432d022637cf7d4f7b9f2b9ecf2a838fd6f76aca9245ed
1aa7525d9eb622341b8468b8a658cf05041109842b262196cc3b431d1f

И так далее, расшерение файла не менять

DJ Mogarych 13-06-2021 22:28 2960201

Код:

$file = get-item 'D:\1\file.txt'
gc 'D:\2\names.txt' |% {
cp "$($file.fullname)" "B:\1\$_$($file.extension)"
cp "$($file.fullname)" "F:\1\$_$($file.extension)"
cp "$($file.fullname)" "G:\1\$_$($file.extension)"
}


Svnkill 13-06-2021 22:37 2960203

DJ Mogarych, Работает спасибо!

Svnkill 14-06-2021 14:25 2960250

DJ Mogarych, Есть одно но имена одинаковые

alpap 14-06-2021 22:39 2960281

Цитата:

Цитата Svnkill
имена одинаковые »

если в папке, то такого не может быть, иначе поясняйте точнее что хотелось и это уже спрашивали выше
Цитата:

Цитата DJ Mogarych
и описывайте порядок переименования. »


Svnkill 15-06-2021 20:58 2960349

Цитата:

Цитата alpap
если в папке, то такого не может быть »

В папке нет, но они полность совподают с именами в другйо папке

DJ Mogarych 15-06-2021 20:59 2960350

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


Время: 20:37.

Время: 20:37.
© OSzone.net 2001-