Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 根据前两个目录名重命名文件_Powershell_Renaming - Fatal编程技术网

Powershell 根据前两个目录名重命名文件

Powershell 根据前两个目录名重命名文件,powershell,renaming,Powershell,Renaming,我想根据前两个目录名重命名文件。例如,下面的文件: C:\temp\288\Issue level 1\288 Temper inad.doc 我想把它改名 288-Issue level 1-288 Temper inad.doc 我已创建以下powershell命令: Get-ChildItem "C:\temp\288\Issue level 1" -Filter *.doc -Recurse | Rename-Item -NewName { $_.Directory.Name+'_'

我想根据前两个目录名重命名文件。例如,下面的文件:

C:\temp\288\Issue level 1\288 Temper inad.doc
我想把它改名

288-Issue level 1-288 Temper inad.doc
我已创建以下powershell命令:

Get-ChildItem "C:\temp\288\Issue level 1" -Filter *.doc -Recurse | Rename-Item -NewName { $_.Directory.Name+'_'+$_.Name}

但是,它仅重命名问题级别为1的文件,我希望它在开始时也包括288文件夹。

只需使用
目录的
父项属性
即可获得以前的目录名。我还将使用格式字符串:


您只从文件夹
288\Issue level 1
中选择文件,因此您的脚本没有理由也重命名文件夹
288
下的其他文件。对不起,但是如何获得父X级别?可能吗?您可以编写一个函数,根据传递的目录级别生成字符串。应该不难。嗯,我指的是有点“本土”的方法。你的意思是分析实际字符串并计算其中的
\
数?
Get-ChildItem "C:\temp\288\Issue level 1" -Filter *.doc -Recurse | 
    Rename-Item -NewName { '{0}-{1}-{2}' -f  $_.Directory.Parent.BaseName, $_.Directory.BaseName, $_.Name }