@Cavabanga

Скрипт копирования папок?

Добрый день комрады. Не очень шарю в cmd и/или powershell. Встал такой вопрос - есть чистые шаблоны файловых баз 1с(ПРОФ, КОРП, Базовая) всегда лежат в одном и том же месте, условно в d:\чистые базы\проф d:\чистые базы\корп ит.д. Иногда бухгалтерам нужно сделать новую чистую базу(будь то проф или корп), делается это банальным копированием папки с болванкой и последующим ее переименованием в название организации.
То есть, скрипт на подобии - robocopy "d:\чистые базы\проф" "d:\base\ооо рога и копыта" /E - себя отлично показал. По сути он заменяет копировать/вставить/переименовать. Можно ли его как то переделать чтобы он выдавал сначала запрос аля: "Вам КОПР, ПРОФ или базовую?", три кнопки на экране, после выбора пользователя нужной, скрипт бы выбирал нужный каталог. Второй запрос :"Как назвать новую папку?", тут соответственно поле куда пользователь введет название новой организации. После чего происходит копирование.
Или я слишком много-го хочу?
  • Вопрос задан
  • 232 просмотра
Пригласить эксперта
Ответы на вопрос 3
@res2001
Developer, ex-admin
Ввод можно сделать с помощью конструкции:
set /p val="Как назвать новую папку?: "
В переменной val будет введенная пользователем строка.
Ответ написан
@alhaos
<#
.SYNOPSIS
    a script that creates a folder and copies another folder into it depending on the user's choice
.PARAMETER clearCorpDatabaseDirecoryName
    directory name which contains clear Corporate database.
.PARAMETER clearProfDatabaseDirecoryName
    directory name which contains clear Professional database.
.PARAMETER clearBasicDatabaseDirecoryName
    directory name which contains clear Basic database.
.PARAMETER databaseDirecoryName
    Specifies the directory where will be created new directory.
#>

param (
    [System.IO.DirectoryInfo]$clearCorpDatabaseDirecoryName = "d:\чистые базы\корп",
    [System.IO.DirectoryInfo]$clearProfDatabaseDirecoryName = "d:\чистые базы\проф",
    [System.IO.DirectoryInfo]$clearBasicDatabaseDirecoryName = "d:\чистые базы\базовая",
    [System.IO.DirectoryInfo]$databaseDirecoryName = "D:\tmp"
)

enum DatabaseEdition {
    corp = 0
    prof = 1
    basic = 2
}

try {
    [String]$companyName = Read-Host -Prompt "Enter company name"
    [DatabaseEdition]$userChoice = Read-Host -Prompt "Select database type 0 - corp, 1 - prof or 2 - basic"

    $companyDirectory = New-Item -ItemType Directory -Path (Join-Path $databaseDirecoryName -ChildPath $companyName)
    switch ($userChoice){
        corp {
            Write-Host "User choice corporate"
            Copy-Item $clearCorpDatabaseDirecoryName -Destination $companyDirectory.FullName -Recurse
            "Directory {0} directory copied to {1}" -f $clearCorpDatabaseDirecoryName, $companyDirectory.FullName

        }
        prof {
            Write-Host "User choice professional"
            Copy-Item $clearProfDatabaseDirecoryName -Destination $companyDirectory.FullName -Recurse
            "Directory {0} directory copied to {1}" -f $clearCorpDatabaseDirecoryName, $companyDirectory.FullName
        }
        basic {
            Write-Host "User choice basic"
            Copy-Item $clearBasicDatabaseDirecoryName -Destination $companyDirectory.FullName -Recurse
            "Directory {0} directory copied to {1}" -f $clearCorpDatabaseDirecoryName, $companyDirectory.FullName
        }
    }
}
catch {
    Write-Host "An error occurred:"
    Write-Host $_
}
Ответ написан
@Cavabanga Автор вопроса
Скрипт что выше частично работает. Папка создается по нужному пути, только пустая(Ессно поменял на свои директории).
При запуске выдает такую ошибку:
600aa0b3e80fd450702503.png
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы