Войти

Показать полную графическую версию : Копирование файла в другие папки


v.k.l.chr.by
27-10-2021, 17:31
Добрый день. Столкнулся с такой проблемой, нужно скопировать файл с заменой из одной папки в другие, отличающие последними символами. Например: надо скопировать файл 1.txt на диск D в папки от user1 до user200.Скрипт у меня получился, но не до конца.


@echo off
XCopy c:\Skripts\1.txt /y D:\ggg\user*.*\*.*

Думаю, что нужно после user поставить...Буду благодарен за подсказки.

megaloman
27-10-2021, 23:31
При условии, что папки существуют@Echo Off
Set "FName=Z:\Box_In\1.txt"
Set "BoxOut=Z:\Box_Out
Set "BoxName=User*.*"

For /F "usebackq delims=" %%d In (`2^>nul Dir "%Boxout%\%BoxName%" /B /A:D`) Do (
>nul Copy "%FName%" "%Boxout%\%%d\"
)
Exit /B
Воэможно применение xcopy >nul XCopy /Y /D "%FName%" "%Boxout%\%%d\"
После префикса (здесь User) возможны любые корректные символы. Кроме того, маска папок может быть более развитая.
Если, как Вы просили, надо скопировать файл 1.txt ... в папки от user1 до user200, то это возможно даже при отсутствии папок - они создадутся:@Echo Off
Set "FName=Z:\Box_In\1.txt"
Set "BoxOut=Z:\Box_Out
Set "BoxName=User"
Set /A N1=1, N2=200

For /L %%i In (%N1%,1,%N2%) Do >nul Xcopy /Y /D "%FName%" "%BoxOut%\%BoxName%%%i\"
Exit /B
Имена и пути пропишИте свои.

DJ Mogarych
28-10-2021, 10:50
Powershell:

1..200 |% {if (test-path ($f = "D:\ggg\user$_")) {cp "c:\Skripts\1.txt" "$f"}}

alpap
28-10-2021, 16:13
DJ Mogarych, дополню, а если папок будет более чем 200, удобнее будет так:
PowerShell

$file = 'file.txt'
$folders = 'Dir\user*'

(gci $folders -ad).FullName.foreach{cpi $file $_}




© OSzone.net 2001-2012