PowerShell移动脚本 - 动态目录

时间:2018-05-01 18:46:10

标签: powershell

我正在创建一个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 :(得分:0)

根据我的评论理解,我理解脚本运行良好而没有错误,并且您想要指向脚本位置的路径

  

知道如何自动将其更改为脚本位置的目录。我试过了:cd $ PSScriptroot没有运气

试试这个 :(已测试:它指向脚本所在的目录)

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

中引入了

$PSScriptRoot

提示:尝试$PSVersionTable.PSVersion了解版本。