我想在目录文件example-file-5.0.0.0.jar
中找到并将其重命名为另一个目录。我写过这个剧本:
Get-ChildItem -Path $directoryFrom | Where-Object { $_.Name -match "example-file-\d\.\d\.\d\.\d\.jar$" } | Copy-Item -Destination $directory\"example-file.jar -Recurse -Force
问题是,我在同一目录中有另一个名为example-file-5.0.0.0-debug.jar
的文件,而是复制而不是example-file-5.0.0.0.jar
文件。我该如何解决这个问题?
答案 0 :(得分:1)
你遗失了别的东西。您的-match
正确:
"example-file-5.0.0.0-debug.jar" -match "example-file-\d\.\d\.\d\.\d\.jar$"
# Output: False
"example-file-5.0.0.0.jar" -match "example-file-\d\.\d\.\d\.\d\.jar$"
# Output: True
但是,您的Copy-Item
cmdlet在目标中有一个随机引用,并且错过了结束引号。我建议您使用Join-Path
cmdlet,这样您就不必担心斜杠:
Copy-Item -Destination (Join-Path $directory "example-file.jar") -Force
注意:我还删除了-recurse
参数,因为您要复制单个文件。