如何在 PowerShell 5.1 中重命名文件(并移动它们)?
How to rename files(and move them) in PowerShell 5.1?
我是 PowerShell 的新手,我被困在一些非常简单的事情上。我在谷歌上搜索了很多并走到了这一步,但似乎无法解决这个问题。我正在尝试从一台服务器到另一台服务器进行简单的文件传输。
该脚本的目的是检查源文件夹中的文件是否存在于目标文件夹中,如果存在,则在文件名前加上 "Copy_"
并将文件夹的所有内容(包括重命名的文件)移动到目标文件夹。
Move-Item
有效,但它会在重命名之前移动所有内容。因此,路径或连接没有问题。
Write-Output $file
returns True
正确,目标文件夹中有重复文件。
问题是:
- 文件重命名无效。它只是在源文件夹中添加一个名为“Copy_”的新文件。除了这个新的“Copy_”文件之外的所有文件都被移动了。
- 源文件夹
Get-ChildItem : Could not find item \server9\VantageAttachments_ProblemsFolder\Vantage_test\NameOfTheFile.txt.
中的每个文件都出现此错误,由第 Get-ChildItem -Force $sourcePath | ForEach-Object
行触发
$sourcePath = "\server9\VantageAttachments_ProblemsFolder\Vantage_test\*.*"
$DestinationPath = "\server2\MfgLib\RevisedPrograms\MC-A\Copied_From_Mazak"
Get-ChildItem -Force $sourcePath | ForEach-Object {
# Check if the file in the Source folder is in Destination folder
$fileName = $_.Name
$file = Test-Path -Path $DestinationPath$fileName
Write-Output $file
if($file){
"\server9\VantageAttachments_ProblemsFolder\Vantage_test$fileName" | Rename-Item -NewName {"Copy_"+$_.Name};
}
Move-Item -Path $sourcePath -Destination $DestinationPath -Force
}
提前致谢。
Copy_
未移动,因为您在 $source
中指定文件必须具有扩展名 *.*
。
尝试在 Rename-Item 中使用圆括号而不是大括号。我认为这是一个范围界定错误,因此 $_.Name
是空的。
$sourcePath = "\server9\VantageAttachments_ProblemsFolder\Vantage_test\*.*"
$DestinationPath = "\server2\MfgLib\RevisedPrograms\MC-A\Copied_From_Mazak"
Get-ChildItem -Force $sourcePath | ForEach-Object {
# Check if the file in the Source folder is in Destination folder
$fileName = $_.Name
$file = Test-Path -Path $DestinationPath$fileName
Write-Output $file
if($file){
"\server9\VantageAttachments_ProblemsFolder\Vantage_test$fileName" | Rename-Item -NewName ("Copy_"+$_.Name);
}
}
Move-Item -Path $sourcePath -Destination $DestinationPath -Force
我是 PowerShell 的新手,我被困在一些非常简单的事情上。我在谷歌上搜索了很多并走到了这一步,但似乎无法解决这个问题。我正在尝试从一台服务器到另一台服务器进行简单的文件传输。
该脚本的目的是检查源文件夹中的文件是否存在于目标文件夹中,如果存在,则在文件名前加上 "Copy_"
并将文件夹的所有内容(包括重命名的文件)移动到目标文件夹。
Move-Item
有效,但它会在重命名之前移动所有内容。因此,路径或连接没有问题。
Write-Output $file
returns True
正确,目标文件夹中有重复文件。
问题是:
- 文件重命名无效。它只是在源文件夹中添加一个名为“Copy_”的新文件。除了这个新的“Copy_”文件之外的所有文件都被移动了。
- 源文件夹
Get-ChildItem : Could not find item \server9\VantageAttachments_ProblemsFolder\Vantage_test\NameOfTheFile.txt.
中的每个文件都出现此错误,由第Get-ChildItem -Force $sourcePath | ForEach-Object
行触发
$sourcePath = "\server9\VantageAttachments_ProblemsFolder\Vantage_test\*.*" $DestinationPath = "\server2\MfgLib\RevisedPrograms\MC-A\Copied_From_Mazak" Get-ChildItem -Force $sourcePath | ForEach-Object { # Check if the file in the Source folder is in Destination folder $fileName = $_.Name $file = Test-Path -Path $DestinationPath$fileName Write-Output $file if($file){ "\server9\VantageAttachments_ProblemsFolder\Vantage_test$fileName" | Rename-Item -NewName {"Copy_"+$_.Name}; } Move-Item -Path $sourcePath -Destination $DestinationPath -Force }
提前致谢。
Copy_
未移动,因为您在 $source
中指定文件必须具有扩展名 *.*
。
尝试在 Rename-Item 中使用圆括号而不是大括号。我认为这是一个范围界定错误,因此 $_.Name
是空的。
$sourcePath = "\server9\VantageAttachments_ProblemsFolder\Vantage_test\*.*"
$DestinationPath = "\server2\MfgLib\RevisedPrograms\MC-A\Copied_From_Mazak"
Get-ChildItem -Force $sourcePath | ForEach-Object {
# Check if the file in the Source folder is in Destination folder
$fileName = $_.Name
$file = Test-Path -Path $DestinationPath$fileName
Write-Output $file
if($file){
"\server9\VantageAttachments_ProblemsFolder\Vantage_test$fileName" | Rename-Item -NewName ("Copy_"+$_.Name);
}
}
Move-Item -Path $sourcePath -Destination $DestinationPath -Force