首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Powershell中将文件重命名为小写

在Powershell中将文件重命名为小写
EN

Stack Overflow用户
提问于 2010-09-29 22:44:47
回答 7查看 27.5K关注 0票数 25

我正在尝试使用Powershell2.0递归地重命名一堆文件。目录结构如下所示:

代码语言:javascript
复制
Leaflets
+ HTML
  - File1
  - File2
  ...
+ HTMLICONS
  + IMAGES
    - Image1
    - Image2
  - File1
  - File2
  ...
+ RTF
  - File1
  - File2
  ...
+ SGML
  - File1
  - File2
  ...

我使用以下命令:

代码语言:javascript
复制
get-childitem Leaflets -recurse | rename -newname { $_.name.ToLower() }

它似乎重命名了这些文件,但却抱怨其子目录:

代码语言:javascript
复制
Rename-Item : Source and destination path must be different.

我使用robocopy每月重新加载数据,但目录不会更改,因此我可以手动重命名它们。有没有办法让get-children跳过子目录(比如find Leaflets -type f ...)?

谢谢。

更新:看起来问题出在已经全是小写的文件上。我尝试将命令更改为:

代码语言:javascript
复制
get-childitem Leaflets -recurse | if ($_.name -ne $_name.ToLower()) rename -newname { $_.name.ToLower() }

但是现在Powershell抱怨说if不是cmdlet、函数等。我可以通过管道将get-childitem的输出转换为if语句吗?

更新2:这是可行的:

代码语言:javascript
复制
$files=get-childitem Leaflets -recurse
foreach ($file in $files)
{
    if ($file.name -ne $file.name.ToLower())
    {
        rename -newname { $_.name.ToLower() }
    }
}
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3822745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档