powershell - 使用 powershell 重命名父母
问题描述
我有 C:\test1\test2\test3\test4\test5\test6\test7\test8
我需要重命名从最后一个(test8)到第一个(test1)的路径的每个文件夹。我必须在具有最大长度名称的 Windows 10 文件夹上进行测试,为此我需要先更改最后一个文件夹的名称(test8),然后再更改其父文件夹(test7)。
我有这个功能
[CmdletBinding()]
param(
[string]$path
)
function createFolderStructure{
$parentName = "F:\"
$name = "ThisFolderHas256Characters_ThisFolderHas256Characters_"+
"ThisFolderHas256Characters_ThisFolderHas256Characters_"+
"ThisFolderHas256Characters_ThisFolderHas256Characters_"+
"ThisFolderHas256Characters_ThisFolderHas256Characters_"+
"ThisFolderHas256Characters_ThisFolderHas"
for ($i=0; $i -lt 10; $i++){
$parentName += "test\";
New-Item "$parentName" -ItemType Directory;
}
Get-ChildItem -Path "F:\test" -Recurse -Force | ForEach-Object{
Rename-Item -Path $_.fullname -NewName $name
}
}
createFolderStructure
但我不知道如何让它从底部到顶部元素。正如我所拥有的那样,它不起作用,因为它从第一个文件夹到最后一个文件夹,并且在第二个文件夹上,我得到了 name too long for path 的异常。任何想法??
解决方案
您可以使用函数递归地执行此操作。我认为您可能需要缩短 $name 变量:
Function Rename-Folders {
param([string]$path)
$name = "ThisFolderHas256Characters_ThisFolderHas256Characters_"+
"ThisFolderHas256Characters_ThisFolderHas256Characters_"+
"ThisFolderHas256Characters_ThisFolderHas256Characters_"+
"ThisFolderHas256Characters_ThisFolderHas256Characters_"+
"ThisFolderHas256Characters_ThisFolderHas"
if ($path -match "$($path | split-path -qualifier)\\?$") {
return
}
Get-Item -path $path | Rename-Item -NewName $name
Rename-Folders -path ($path | split-path)
}
$path = "F:\test1\test2\test3\test4"
Rename-Folders $path
推荐阅读
- javascript - 如何在 React 的“Enter”键上重置输入字段?
- ansible - 在 Centos7 上设置静态 IP
- amazon-web-services - Play Framework - AWS 的生产配置线程/数据库连接
- flutter - 是什么导致“注意:使用 -Xlint 重新编译:deprecation 以获取详细信息。” 颤振中的错误?
- javascript - Javascript İf Promise 加载 Onclick 然后 İf 再次 Onclick 不再加载?
- symfony - 无法在服务器上发布或修补,API 平台禁止 403
- python - 如何通过绝对路径导入本地存储的模块?
- pandas - 如何将结果从 np.mean 转换为 csv?
- python - 使用另一个 python3 解释器在线程中调用脚本
- html - Django模板中的Tabindex不会将光标移动到正确的字段