Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 重命名文件以匹配其他文件夹中的文件名_Powershell - Fatal编程技术网

Powershell 重命名文件以匹配其他文件夹中的文件名

Powershell 重命名文件以匹配其他文件夹中的文件名,powershell,Powershell,我有两个目录 D:\test\get\f D:\test\set\f 在get文件夹和set文件夹中,文件数量相等。set中的所有文件都相同(这是一个常见的图像文件,重复多次以匹配set文件夹中的文件数) 我的问题是,如何将set文件夹中的所有文件重命名为与get文件夹中相同的文件 e、 g: 以前 获取文件夹 apple.jpg mango.jpg lychee.jpg 123.jpg 12!.jpg asdasd.jpg apple.jpg mango.jpg lychee.jpg

我有两个目录

D:\test\get\f

D:\test\set\f
get
文件夹和
set
文件夹中,文件数量相等。
set
中的所有文件都相同(这是一个常见的图像文件,重复多次以匹配
set
文件夹中的文件数)

我的问题是,如何将
set
文件夹中的所有文件重命名为与
get
文件夹中相同的文件

e、 g:

以前

获取文件夹

apple.jpg
mango.jpg
lychee.jpg
123.jpg
12!.jpg
asdasd.jpg
apple.jpg
mango.jpg
lychee.jpg
apple.jpg
mango.jpg
lychee.jpg
设置文件夹

apple.jpg
mango.jpg
lychee.jpg
123.jpg
12!.jpg
asdasd.jpg
apple.jpg
mango.jpg
lychee.jpg
apple.jpg
mango.jpg
lychee.jpg

之后

获取文件夹

apple.jpg
mango.jpg
lychee.jpg
123.jpg
12!.jpg
asdasd.jpg
apple.jpg
mango.jpg
lychee.jpg
apple.jpg
mango.jpg
lychee.jpg
设置文件夹

apple.jpg
mango.jpg
lychee.jpg
123.jpg
12!.jpg
asdasd.jpg
apple.jpg
mango.jpg
lychee.jpg
apple.jpg
mango.jpg
lychee.jpg

这是一个简单的例子,它是未经优化的,并假定为最佳情况。它显示了在路径中迭代文件、获取文件名和重命名文件的基本步骤

$names = @()
$getPath = "C:\Temp\get"
$setPath = "C:\Temp\set"
Get-ChildItem $getPath |
    Foreach-object{
    $names += $_.Name
}
$i = 0
Get-ChildItem $setPath |
Foreach-object{
    Rename-Item -Path $_.FullName -NewName $names[$i]
    $i++
}

如何创建
set
文件夹?为什么不在事后解决这个问题呢?有些想法会浮现在脑海中,但会非常具体,很容易被打破……所以更多的信息会有所帮助。@KoryGill谢谢。我只是手动复制并粘贴相同的图像文件,以匹配
set
文件夹中的文件数。谢谢。我有个错误<代码>ForEach对象:无法绑定参数“RemainingScripts”。无法将类型为“System.String”的“=0”值转换为类型为“System.Management.Automation.ScriptBlock”Ok可能是您的powershell版本。尝试将该行更改为:[int]$i=0