Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Как скопировать файл много раз и в несколько папок

Ответить
Настройки темы
CMD/BAT - Как скопировать файл много раз и в несколько папок

Новый участник


Сообщения: 43
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 20:00, 04-06-2021

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Можно.

Цитата Svnkill:
(300 копий) »
В одном каталоге файлы не могут иметь одно и то же имя. Опишите принцип формирования имён у копий файла.

Отправлено: 20:57, 04-06-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 43
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 23:22, 04-06-2021 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата 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

Имена и пути поменяйте на Ваши.
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:52, 04-06-2021 | #4


Новый участник


Сообщения: 43
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Для первого варианта: »
Батник просто закрываетсья, и в первом варианте и во втором

Последний раз редактировалось Svnkill, 10-06-2021 в 20:01.


Отправлено: 17:34, 10-06-2021 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

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

Отправлено: 21:38, 10-06-2021 | #6


Новый участник


Сообщения: 43
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 14:50, 12-06-2021 | #7


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6666
Благодарности: 1553

Профиль | Отправить PM | Цитировать


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 принципиально?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 12-06-2021 в 17:05.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:57, 12-06-2021 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Svnkill:
Тоже самое »
Скриншоты покажите.

Отправлено: 20:01, 12-06-2021 | #9


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


DJ Mogarych явно утомился.
Код: Выделить весь код
[void]($$ = gi D:\1\file.txt) && ([Char[]]'BFG').ForEach{[void]($x=$_) && (1..300).ForEach{cp $$ "$($x):\1\$_$($$.Extension)"}}

Отправлено: 23:06, 12-06-2021 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Как скопировать файл много раз и в несколько папок

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2016 - IMAP, несколько ящиков, много папок. Как читать все письма через единую папку? vkapas Microsoft Office (Word, Excel, Outlook и т.д.) 0 07-05-2019 06:18
CMD/BAT - Скопировать набор файлов (папок) во все подкаталоги где есть определенный файл adder63 Скриптовые языки администрирования Windows 2 19-01-2018 14:31
CMD/BAT - [решено] Скопировать папку №1 и её содержимое несколько раз по порядковым номерам Сергей Красиков Скриптовые языки администрирования Windows 2 04-10-2015 23:11
CMD/BAT - Выполнение одной программы несколько раз и запись результатов в файл Megatron13 Скриптовые языки администрирования Windows 6 10-08-2012 22:37
CMD/BAT - [решено] Как скопировать весь каталог кроме нескольких папок? N0MAK Скриптовые языки администрирования Windows 5 01-02-2012 20:37




 
Переход