Как скопировать файл много раз и в несколько папок
Привет. Какая задача. У меня есть файл его нужно скопировать много раз в несколько папок.
Из папки D:\1 в B:\1 (300 копий) в F:\1 (300 копий) G:\1 (300 копий)
Это можно реалезовать через CMD?
|
Можно.
В одном каталоге файлы не могут иметь одно и то же имя. Опишите принцип формирования имён у копий файла.
|
Цитата:
Цитата Iska
Опишите принцип формирования имён »
|
Вообще у меня есть TXT в тором хранятся имена которые я собирался потом отдельно переименовать. Хранятся они по пути D:\2 . Если так нельзя то можно просто чтобы имя было 1 2 3 и так далее
|
Цитата:
Цитата 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, так и должно быть.
Откройте командную строку (cmd.exe), запустите оттуда пакетный файл и прочитайте, что надо указывать в его параметрах.
|
Цитата:
Цитата 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 принципиально?
|
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)"}}
|
А чтобы имена из txt Брал?
как я вставлю код или bat открываю сразу закрываетсяь консоль
|
Svnkill, значит, Вы не сделали:
Цитата:
Цитата Iska
Откройте командную строку (cmd.exe), запустите оттуда пакетный файл и прочитайте, что надо указывать в его параметрах. »
|
хотя пишете об обратном.
|
DJ Mogarych |
13-06-2021 19:46 2960185 |
Svnkill, выкладывайте 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)"
}
|
DJ Mogarych, Работает спасибо!
|
DJ Mogarych, Есть одно но имена одинаковые
|
если в папке, то такого не может быть, иначе поясняйте точнее что хотелось и это уже спрашивали выше
Цитата:
Цитата DJ Mogarych
и описывайте порядок переименования. »
|
|
Цитата:
Цитата alpap
если в папке, то такого не может быть »
|
В папке нет, но они полность совподают с именами в другйо папке
|
DJ Mogarych |
15-06-2021 20:59 2960350 |
Так и подразумевалось. Если нужно по-другому, то объясните нормально, как должно быть.
|
Время: 20:37.
© OSzone.net 2001-