【问题标题】:Renaming files in powershell using the folder name使用文件夹名称重命名powershell中的文件
【发布时间】:2012-08-05 11:57:52
【问题描述】:

使用 Powershell,我想通过使用文件所在文件夹的名称来重命名文件夹中的文件。所以在我的 C:\temp 目录中,有 3 个文件夹分别称为 'aaa'、'bbb' 和 'ccc '。在每个文件夹中,有 3 个文件,分别称为 doc1.txt、doc2.txt 和 doc3.txt。我想将所有 9 个 .txt 文件重命名为 folderName+fileName,因此它们将被重命名为:

aaadoc1.txt
aaadoc2.txt
aaadoc3.txt
bbbdoc1.txt
bbbdoc2.txt
bbbdoc3.txt
cccdoc1.txt
cccdoc2.txt
cccdoc3.txt

请任何人指出如何解决这个问题的正确方向吗?

【问题讨论】:

    标签: powershell file-io


    【解决方案1】:

    这将重命名文件并在文件夹名和文件名之间添加下划线('_'):

    Get-ChildItem C:\temp -Filter *.txt -Recurse | Rename-Item -NewName { $_.Directory.Name+'_'+$_.Name}
    

    【讨论】:

    • 哇,谢谢谢伊!这是一种享受,它还给了我其他需要学习的东西!
    • 如何为子目录实现同样的效果?即 Dir1_Dir2_filename?
    【解决方案2】:

    [IO.Directory]::GetCurrentDirectory().split('\\')[-1] 会给你你所在的目录。

    【讨论】:

      【解决方案3】:

      试试这个

      $dirname = resolve-path . | split-path -leaf
      Get-ChildItem -Name | Foreach { Rename-Item $_  ( $dirname + $_ ) }
      

      小心不要破坏/删除您的任何文件。不保证。

      【讨论】:

      • 谢谢约翰!它有点工作,但有一些意想不到的副作用! txt 文件被重命名,但文件夹也被重命名为 tempaaa tempbbb tempccc。这实际上并没有给我带来问题,但是如果您只想重命名文件而不是文件夹,那么您会被搞砸的。有趣的是,您的方法与另一种方法有何不同 - 似乎使用 Powershell 有很多方法可以给猫剥皮!感谢您的帮助
      猜你喜欢
      • 2018-02-07
      • 1970-01-01
      • 2018-08-21
      • 1970-01-01
      • 2015-04-17
      • 2020-10-21
      • 2018-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多