Powershell不处理通配符

时间:2015-03-31 15:17:46

标签: powershell powershell-v2.0 powershell-v3.0

该脚本是一个简单的重命名和移动/复制脚本,使用$Id = [GUID]::NewGuid()重命名为guid并更改名称。当我将其指向特定文件但当我将其更改为

时,一切正常
$source = "C:\Users\username\Pictures\*.jpg" 

* .jpg不想阅读并给出以下错误;

Rename-Item : Cannot rename because item at 'C:\Users\username\Pictures\*.jpg' does not exist. 

非常感谢任何帮助。 我的脚本如下:

$Id = [GUID]::NewGuid()
$source = "C:\Users\username\Pictures\*.jpg"
$newfilename = "C:\Users\username\Pictures\$Id.jpg"
Rename-Item $source -NewName $newfilename 
sleep -seconds (5)
copy-Item "C:\Users\username\Pictures\$Id.jpg"  "\\Server\folder\subfolder\$Id.jpg "

1 个答案:

答案 0 :(得分:0)

你几乎就在那里 - 你实际上需要首先获得与*.jpg匹配的文件列表,然后迭代它们。

以下内容应该是你所追求的:

$sourceFiles = Get-ChildItem "C:\Users\username\Pictures\*.jpg"

foreach ($file in $sourceFiles) {
  $Id = [GUID]::NewGuid()
  $newfilename = "C:\Users\username\Pictures\$Id.jpg"
  Rename-Item $file.fullName -NewName $newfilename 
  sleep -seconds 5
  copy-Item "$newfilename" "\\Server\folder\subfolder\$Id.jpg"
}