我正在创建一个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)
}`
答案 0 :(得分:0)
根据我的评论理解,我理解脚本运行良好而没有错误,并且您想要指向脚本位置的路径
知道如何自动将其更改为脚本位置的目录。我试过了:cd $ PSScriptroot没有运气
试试这个 :(已测试:它指向脚本所在的目录)
$rootPath = split-path -parent $MyInvocation.MyCommand.Definition
echo "Path is: $rootPath"
PowerShell 版本3 中引入了 $PSScriptRoot
提示:尝试$PSVersionTable.PSVersion
了解版本。