我的源文件都驻留在一个文件夹中,该文件夹的路径包含在名为$template
的变量中。
我需要指定确切的文件名,因为每个文件都会转到不同的目的地。
我的目标是仅将文件名连接到变量。
示例:
$template = "D:\source\templatefiles\"
Filename1是:“graphic-183.jpg”
我试过了:
Join-Path $template graphic-183.jpg
在cli发布这个似乎可以做我想要的。
但是现在,除了为每个文件创建一个新变量之外,如何引用这个连接文件路径?它并不像通过列表那样简单地依赖于确定文件所在位置的文件名。
我正在玩弄其他情况,否则如果,但肯定不是这么难。
最重要的是,我只想在文件夹路径前添加每个文件名并对目标进行硬编码,因为每次运行脚本时它始终都是相同的。
我刚刚编辑了这篇文章,因为我忘了提及我是如何使用它的。
在我的脚本中,我打算使用以下行:
Copy-Item -Path $template filename.ext -Destination $destfolder
上面突出显示的部分是我尝试将$template
加入文件名。
感谢您的任何建议。
- = Bruce D. Meyer
答案 0 :(得分:3)
也许这就是你想要的?
您可以使用括号调用cmdlet,如下所示:
Copy-Item -Path (Join-Path $template filename.ext) -Destination $destfolder
这会导致PowerShell从“参数模式”变为“表达式模式” - 即,它将Join-Path
cmdlet的输出作为表达式返回。
是的,大卫和安斯加的建议也很有帮助 - 试试这个只能获得完整路径:
(get-childitem $template) | select fullname
答案 1 :(得分:1)
您可以像这样构建路径:
$template = "D:\source\templatefiles\"
Copy-Item -Path "${template}filename.ext" ...
但是,我认为大卫的建议可能是解决问题的更好方法。您可以使用哈希表将文件名映射到目标文件夹,并执行以下操作:
$locations = @{
"foo" = "C:\some",
"bar" = "C:\other",
...
}
Get-ChildItem $template | % { Copy-Item $_ $location[$_.Name] }