在其所在的文件夹中运行PowerShell脚本

时间:2018-08-08 18:48:58

标签: powershell file-extension get-childitem

我有一个问题,我认为这个问题相对容易回答。我有一个脚本,它将空白文件扩展名更改为PDF。在这里:

$directory = 'C:\Test\Files'

Get-ChildItem -File $directory | Where-Object { -Not $_.Extension } | Foreach-Object {
  $_ | Rename-Item -NewName "$($_.Name).pdf"
}

它工作得很好,但是我只需要在它所在的目录/文件夹中运行即可。例如,如果我将它放在我的documents文件夹中,它将只在我的documents文件夹中运行,而不会对其进行任何更改其他任何文件夹,包括documents文件夹中的子文件夹。这有可能吗,会是什么样?谢谢!

2 个答案:

答案 0 :(得分:1)

在PowerShell v3或更高版本上使用

$directory = $PSScriptRoot

在旧版本上使用

$directory = Split-Path -Parent $MyInvocation.MyCommand.Path

答案 1 :(得分:0)

使用$ myinvocation自动变量

$invoke = $myinvocation.mycommand.path
$directory = Split-Path $invoke
Get-ChildItem -File $directory | Where-Object { -Not $_.Extension } | Foreach-Object {$_ | Rename-Item -NewName "$($_.Name).pdf"
}