Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 19.12.2018
Сообщений: 2
1

Копирование файла только если он существует в папке назначения

19.12.2018, 13:37. Показов 3316. Ответов 3

Author24 — интернет-сервис помощи студентам
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$sourceCatalog='I:\откуда' #путь до  файла  образца
$receiverCatalog='E:\куда' # путь  до  списка  каталогов
$receiverSubCatalog='\кудапослемассива' # подкаталог  в  который  необходимо  поместить  файл  в переменной
$file='test.exe' #имя  файла  образца 
 
$arrayCatalog =  Get-ChildItem -Path $receiverCatalog | Where {$_.PsIsContainer} 
ForEach ($Catalog in $arrayCatalog) {
    #собираем  пути откуда $p1 и куда $p2 будут  копироваться файлы
    $p1 = $sourceCatalog
    $p2 = $receiverCatalog+'\'+$Catalog+$receiverSubCatalog
    Try
    {
        Copy-Item -Path $p1\$file -Destination $p2\$file -Force
    }
Имея структуру выше я могу скопировать файл заданный в переменной по папкам в массиве, используя -Force я заменю все файл даже если он существует в только чтение.

Подскажите пожалуйста, какой командлет или может быть параметр для copy-item использовать, чтобы я копировал(и заменял) файл только если он существует, а если его(файла) нет то файл бы не вставлялся.
Подумал о If exist или if -not но в пш совсем ноль, не получается добавить в свой недоскрипт..
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2018, 13:37
Ответы с готовыми решениями:

Копирование папки с использованием команды XCOPY с заменой одноимённых файлов в папке назначения
Всем привет как сделать написать бат который копировал бы папки с заменой файлов внутри папки я...

Копирование файлов с переименованием в случае совпадения имён копируемых и имеющихся в папке назначения файлов
Доброго времени суток. Убедительная просьба, помогите пожалуйста решить задачу. Существует...

Копирование файлов с переименованием в случае совпадения имён перемещаемых и имеющихся в папке назначения файлов
Добрый день. Помогите создать bat файл. Смысл в чем есть папка загрузки на компьютере с нее файлы и...

Копирование папки файла, переменная в качестве назначения
Приветствую всех. Возникло затруднение, точнее не получается нагуглить, в каком виде нужно...

3
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
19.12.2018, 14:08 2
Лучший ответ Сообщение было отмечено guzniwe как решение

Решение

Цитата Сообщение от guzniwe Посмотреть сообщение
Подскажите пожалуйста, какой командлет или может быть параметр для copy-item использовать, чтобы я копировал(и заменял) файл только если он существует, а если его(файла) нет то файл бы не вставлялся.
Test-Path

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
$sourceCatalog      ='I:\откуда'        #путь до  файла  образца
$receiverCatalog    ='E:\куда'          # путь  до  списка  каталогов
$receiverSubCatalog ='кудапослемассива' # подкаталог  в  который  необходимо  поместить  файл  в переменной
$file               ='test.exe'         #имя  файла  образца 
 
$src = "$sourceCatalog\$file"
 
ForEach ($Catalog in (Get-ChildItem -Path $receiverCatalog -Directory).FullName)
{
    $dst = "$Catalog\$receiverSubCatalog\$file"
    if (Test-Path $dst) {Copy-Item -Path $src -Destination $dst -Force}
}
1
0 / 0 / 0
Регистрация: 19.12.2018
Сообщений: 2
20.12.2018, 02:30  [ТС] 3
Спасибо! еще и массив мой упразднили, гораздо проще так)
0
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
20.12.2018, 10:54 4
Цитата Сообщение от guzniwe Посмотреть сообщение
гораздо проще так
Если я правильно понял цель вашего скрипта, тогда можно ещё проще:

PowerShell
1
2
3
4
5
6
$sourceCatalog      = 'I:\откуда'        # путь до  файла  образца
$receiverCatalog    = 'E:\куда'          # путь  до  списка  каталогов
$receiverSubCatalog = 'кудапослемассива' # подкаталог  в  который  необходимо  поместить  файл  в переменной
$file               = 'test.exe'         # имя  файла  образца 
 
ls $receiverCatalog $file -rec -File | ?{$_.FullName -Like "*\$receiverSubCatalog\$file"} |% {cp "$sourceCatalog\$file" $_.FullName -Force -WhatIf}
0
20.12.2018, 10:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2018, 10:54
Помогаю со студенческими работами здесь

Вывести «да», если существует строка, состоящая только из нулей
Заполнить массив 2 на 5 случайными числами от 0 до 2. Вывести «да», если существует строка,...

Как сменить расширение большего по размеру файла, если в папке находятся более одного файла?
Привет. Есть такой код for /r "D:\Test" %%i in (*.tmp?) do ren "%%i" *.txt меняет расширение...

Добавить если не существует, показать если существует (SQL-запрос)
Мир всем и привет Как задать sql запрос в adoquery на существование записи: "если есть...

Если h-файл существует, подключить его, если не существует, проигнорировать
Как это сделать?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru