Показать полную графическую версию : Как скопировать файл много раз и в несколько папок
Привет. Какая задача. У меня есть файл его нужно скопировать много раз в несколько папок.
Из папки D:\1 в B:\1 (300 копий) в F:\1 (300 копий) G:\1 (300 копий)
Это можно реалезовать через CMD?
Можно.
(300 копий) »
В одном каталоге файлы не могут иметь одно и то же имя. Опишите принцип формирования имён у копий файла.
Опишите принцип формирования имён »
Вообще у меня есть TXT в тором хранятся имена которые я собирался потом отдельно переименовать. Хранятся они по пути D:\2 . Если так нельзя то можно просто чтобы имя было 1 2 3 и так далее
TXT в тором хранятся имена которые я собирался потом отдельно переименовать. »
txt с тремястами строк, так?
Для первого варианта:
У меня есть файл его нужно скопировать много раз в несколько папок.
Из папки 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
Для второго варианта:
Вообще у меня есть 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), запустите оттуда пакетный файл и прочитайте, что надо указывать в его параметрах.
Откройте командную строку (cmd.exe) »
Тоже самое
DJ Mogarych
12-06-2021, 16:57
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
DJ Mogarych явно утомился.
[void]($$ = gi D:\1\file.txt) && ([Char[]]'BFG').ForEach{[void]($x=$_) && (1..300).ForEach{cp $$ "$($x):\1\$_$($$.Extension)"}}
powershell »
А чтобы имена из txt Брал?
Скриншоты »
как я вставлю код или bat открываю сразу закрываетсяь консоль
Svnkill, значит, Вы не сделали:
Откройте командную строку (cmd.exe), запустите оттуда пакетный файл и прочитайте, что надо указывать в его параметрах. »
хотя пишете об обратном.
DJ Mogarych
13-06-2021, 19:46
Svnkill, выкладывайте txt и описывайте порядок переименования.
выкладывайте txt »
0x838b07d81d1e3f01db69f86c4e3cec2f902567c1b7836
8fcc2213ae2ff41ca04962cdeb5b086d81772c20039f32f30
396f7f4621432d022637cf7d4f7b9f2b9ecf2a838fd6f76aca9245ed
1aa7525d9eb622341b8468b8a658cf05041109842b262196cc3b431d1f
И так далее, расшерение файла не менять
DJ Mogarych
13-06-2021, 22:28
$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
15-06-2021, 20:59
Так и подразумевалось. Если нужно по-другому, то объясните нормально, как должно быть.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.