首页 > 解决方案 > 如何将文件夹中的所有文件复制到另一个文件夹并更改扩展名?

问题描述

我在一个没有扩展文件的文件夹中有一些文件。我想将所有文件复制到另一个文件夹并将其扩展名更改为.txt.

我尝试了这段代码,但创建目标文件仍然出错。

$JOB = Copy-Item -Path C:\Users\XX\Documents\Folder1* -Destination "C:\Users\XX\Documents\Folder2"
Rename-Item -Path C:\Users\XX\Documents\Folder2\* -NewName *.TXT

标签: powershell

解决方案


Get-ChildItem -Path .\Folder1 -File |
  ForEach-Object { Copy-Item -Path $_.FullName -Destination ".\Folder2\$($_.BaseName).txt" }

# Alternatively without ForEach-Object (see note below)
Get-ChildItem -Path .\Folder1 -File |
  Copy-Item -Path $_.FullName -Destination { ".\Folder2\$($_.BaseName).txt" }

那应该做的工作。请记住,它仅适用于一级,如果您想要文件夹结构的递归副本,则必须稍微修改脚本。

基本上,这里发生的事情是您找到所有文件,然后将它们通过管道传输到具有源文件属性的Copy-Item目标路径BaseName(与属性相比,它不包含扩展名Name)。


注意:因为-Path接受管道输入(请参阅此处的文档),您不需要使用ForEach-Object. 但是,它对于可见性可能仍然有用(取决于您的偏好)。

感谢@LotPings注意到上述内容。


推荐阅读