Powershell - 如何将文件名作为包含该文件类型的任何路径的文件夹前缀
Powershell - How to prefix filename into folder for any path containing that file type
需要 Powershell 脚本从目录中带有时间和日期戳的文件夹中的文件类型中提取文件基本名称,并使用该基本名称附加这些文件夹。
下面的脚本可以替换下面的路径名,但我需要在文件夹前加上前缀。这样可以join-path吗?
cd C:\Directory
Get-ChildItem *.lsa -File -Recurse | ForEach-Object {
Rename-Item (Split-Path $_ -Parent) ($_.BaseName) -WhatIf
}
结果:
What if: Performing the operation "Rename Directory" on target "Item: C:\Directory\originalpath
Destination: C:\Directory\basename".
我要的是"C:\Directory\basename_originalpath"
或者更好的是 "C:\Directory\basename\originalpath"
我认为 Join-path
是解决方案,但我是第一次编写脚本,不能 link 这两个命令。我还必须指定起始目录作为第一次尝试 运行 我的整个 c:\
驱动器没有它。
它不漂亮,但我认为这会起作用:
Get-ChildItem *.lsa -File -Recurse | ForEach-Object {
if(-Not (Test-Path -Path "$outputDirectory$($_.BaseName)")){
New-Item -WhatIf -ItemType Directory -Path "$outputDirectory$($_.BaseName)"
}
Move-Item (Split-Path $_ -Parent) "$outputDirectory$($_.BaseName)$($_.Directory.BaseName)" -WhatIf
}
更新代码。
需要 Powershell 脚本从目录中带有时间和日期戳的文件夹中的文件类型中提取文件基本名称,并使用该基本名称附加这些文件夹。
下面的脚本可以替换下面的路径名,但我需要在文件夹前加上前缀。这样可以join-path吗?
cd C:\Directory
Get-ChildItem *.lsa -File -Recurse | ForEach-Object {
Rename-Item (Split-Path $_ -Parent) ($_.BaseName) -WhatIf
}
结果:
What if: Performing the operation "Rename Directory" on target "Item: C:\Directory\originalpath
Destination: C:\Directory\basename".
我要的是"C:\Directory\basename_originalpath"
或者更好的是 "C:\Directory\basename\originalpath"
我认为 Join-path
是解决方案,但我是第一次编写脚本,不能 link 这两个命令。我还必须指定起始目录作为第一次尝试 运行 我的整个 c:\
驱动器没有它。
它不漂亮,但我认为这会起作用:
Get-ChildItem *.lsa -File -Recurse | ForEach-Object {
if(-Not (Test-Path -Path "$outputDirectory$($_.BaseName)")){
New-Item -WhatIf -ItemType Directory -Path "$outputDirectory$($_.BaseName)"
}
Move-Item (Split-Path $_ -Parent) "$outputDirectory$($_.BaseName)$($_.Directory.BaseName)" -WhatIf
}
更新代码。