Windows power shell脚本,将每个目录中的所有文件重命名为父';姓名

Windows power shell脚本,将每个目录中的所有文件重命名为父';姓名,windows,shell,powershell,Windows,Shell,Powershell,我正在学习Windows PS-但在此之前,我需要一些帮助来编写快速命令: 我有一个目录的目录,每个目录都有一个唯一的名称 我需要将每个目录中的所有文件重命名为它们的父名称!详情如下: 当前结构: /pdfdirectory/pdf_title_directory/filename.pdf /pdfdirectory/pdf_title_directory123/filename.pdf 在shell脚本之后: /pdfdirectory/pdf_title_directory/pdf_tit

我正在学习Windows PS-但在此之前,我需要一些帮助来编写快速命令:

我有一个目录的目录,每个目录都有一个唯一的名称

我需要将每个目录中的所有文件重命名为它们的父名称!详情如下:

当前结构:

/pdfdirectory/pdf_title_directory/filename.pdf
/pdfdirectory/pdf_title_directory123/filename.pdf
在shell脚本之后:

/pdfdirectory/pdf_title_directory/pdf_title_directory.pdf
/pdfdirectory/pdf_title_directory123/pdf_title_directory123.pdf

谢谢

您正在学习Powershell并将尝试以下内容:

gci .\test -recurse | ?{ -not $_.PsIsContainer } | 
%{rename-item -path $_.fullname -newname ($_.Directory.Name + $_.Extension)}
当然,如果目录中有多个文件,上述操作将失败


要了解上述内容,请学习基本的Powershell命令,如
gci
(Get ChildItem的别名)和Powershell管道概念。

您正在学习Powershell,并将尝试以下内容:

gci .\test -recurse | ?{ -not $_.PsIsContainer } | 
%{rename-item -path $_.fullname -newname ($_.Directory.Name + $_.Extension)}
当然,如果目录中有多个文件,上述操作将失败


要理解上述内容,请学习基本的Powershell命令,如
gci
(Get ChildItem的别名)和Powershell管道概念。

值得注意的是,您可以将Get ChildItem的输出直接导入重命名项,而不需要foreach。另外,-NewName参数值可以是生成新名称的脚本块。此脚本块可以使用$引用当前正在处理的文件对象

所以你可以这样做:

dir -Recurse -Include filename.pdf | ren -NewName { "$($_.Directory.Name).pdf" }

(我想是Keith Hill让我意识到了这个技巧。)

值得注意的是,您可以将Get ChildItem的输出直接导入重命名项,而不需要foreach。另外,-NewName参数值可以是生成新名称的脚本块。此脚本块可以使用$引用当前正在处理的文件对象

所以你可以这样做:

dir -Recurse -Include filename.pdf | ren -NewName { "$($_.Directory.Name).pdf" }

(我想是基思·希尔让我意识到了这个把戏。)

谢谢!这让我开始学习很多东西,power shell也在列表中,但我真的很想运行它-我确实有多个文件-!但我想我可以修改它,让它继续运行…。@jordan.baucke-你说的多个文件是什么意思?既然您要将同一目录中的文件重命名为该目录的名称,那么同一目录中有多少文件具有相同的名称?它只有一些其他文件,
.PDF
文件是我需要重命名的唯一文件-其他文件并不重要。解决方案工作得很好,考虑到其他文件不重要,它重命名了子目录中的所有文件!谢谢这让我开始学习很多东西,power shell也在列表中,但我真的很想运行它-我确实有多个文件-!但我想我可以修改它,让它继续运行…。@jordan.baucke-你说的多个文件是什么意思?既然您要将同一目录中的文件重命名为该目录的名称,那么同一目录中有多少文件具有相同的名称?它只有一些其他文件,
.PDF
文件是我需要重命名的唯一文件-其他文件并不重要。解决方案工作得很好,考虑到其他文件不重要,它重命名了子目录中的所有文件@谢谢我正在阅读:在Don的一个月午餐中学习Windows PowerShellJones@Thanks! 我正在阅读唐·琼斯的《在一个月的午餐中学习Windows PowerShell》