Скрипт перемещения PowerShell - динамический каталог - PullRequest
0 голосов
/ 01 мая 2018

Я создаю сценарий перемещения PowerShell, который будет динамически создавать каталоги на основе имени файла, а затем перемещать файлы в соответствии с их именем. Каждый аспект этого скрипта работает, кроме пути к каталогу по умолчанию. Любая идея, как я мог бы автоматически изменить его в каталог местоположения скрипта. Я пробовал: cd $PSScriptroot без удачи

Вот мой вспомогательный файл, для создания файлов. В нашей реальной среде файлы уже будут сгенерированы: cd $PSScriptroot New-Item -Path ($PSScriptroot + '\59_' + '20180101' + '.txt') -ItemType file New-Item -Path ($PSScriptroot + '\59_' + '20180102' + '.txt') -ItemType file New-Item -Path ($PSScriptroot + '\59_' + '20180103' + '.txt') -ItemType file New-Item -Path ($PSScriptroot + '\59_' + '20180104' + '.txt') -ItemType file ... New-Item -Path ($PSScriptroot + '\59_' + '20181231' + '.txt') -ItemType file

Вот сценарий:

`cd $PSScriptroot
$FileNameArray = Get-ChildItem -Filter "*.txt"
$FileNameArray = $FileNameArray -replace "....$"
$FileNameArray = $FileNameArray.Substring(3)
Foreach ($f in $FileNameArray)
{
    #Year
    $Year = $f -replace "....$"
    $FilePathY = "$PSScriptroot\$Year" 
    if (Test-Path $FilePathYM ){
    }
    else {New-Item -ItemType Directory -Path ($FilePathY)}
    #Month
    $Month = $f.Substring(4) -replace "..$"
    $FilePathYM = "$PSScriptroot\$Year\$Month"
     if (Test-Path $FilePathYM ){
    }
    else {New-Item -ItemType Directory -Path ($FilePathYM)}
    #Days
    $Day = $f.Substring(6)
    $FilePathYMD = $PSScriptroot +'\'+ $Year +'\'+ $Month +'\'+ $Day
     if (Test-Path $FilePathYMD){
    }
    else {New-Item -ItemType Directory -Path ($FilePathYMD)}
}
Foreach($file in $FileNameArray)
{
        $Year = $file -replace "....$"
        $Month = $file.Substring(4) -replace "..$"
        $Day = $file.Substring(6)`

        Move-Item ($PSScriptroot + '\59_' + $file + '.txt' ) ($PSScriptroot + '\' + $Year + '\' + $Month + '\' + $Day)
}`

1 Ответ

0 голосов
/ 01 мая 2018

Из того, что я понимаю из комментариев, я понимаю, что скрипт работает нормально без ошибок и вы хотите указать путь, указывающий на местоположение скрипта

Любая идея, как я могу автоматически поменять ее на каталог Местоположения Скрипта. Я пробовал: CD $ PSScriptroot без удачи

Попробуйте это : (Протестировано: указывает на каталог, в котором находится скрипт)

$rootPath = split-path -parent $MyInvocation.MyCommand.Definition
echo "Path is: $rootPath"

$PSScriptRoot представлен в PowerShell версия 3

СОВЕТ : Попробуйте $PSVersionTable.PSVersion, чтобы узнать версию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...