如何将一个文件夹中的所有文件复制到另一个文件夹并更改扩展名?

时间:2019-06-18 08:06:05

标签: powershell

我的文件夹中有一些文件,没有扩展名文件。我想将所有文件复制到另一个文件夹,并将其扩展名更改为.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

1 个答案:

答案 0 :(得分:3)

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属性(与扩展名相比,其中不包含扩展名)来构建目标路径{1}}属性。


注意:由于Name接受管道输入(请参见docs here),因此您无需使用-Path。但是,它对于可见性仍然有用(取决于您的首选项)。

注意到以上内容而获得@LotPings的奖励。