1

我的源文件都位于一个文件夹中,该文件夹的路径包含在名为$template. 我需要指定确切的文件名,因为每个文件都去往不同的目的地。

我的目标只是将文件名连接到变量。

例子:

$template = "D:\source\templatefiles\"

文件名 1 为:“graphic-183.jpg”

我试过了:

Join-Path $template graphic-183.jpg

在 cli 上发出这个似乎可以满足我的要求。

但是现在,除了为每个文件创建一个新变量之外,我如何引用这个连接的文件路径?它不像根据决定文件去向的文件名那样简单地通过列表查找我的方式。

我在玩其他情况,elseIf,但肯定没那么难。

底线是,我只想为每个文件名添加文件夹路径的前缀,并对目标进行硬编码,因为每次运行脚本时它总是相同的。


编辑

我刚刚编辑了这个,因为我忘了提到我是如何尝试使用它的。

在我的脚本中,我打算有这样的行:

Copy-Item -Path $template filename.ext -Destination $destfolder

这是我试图加入$template文件名的上面突出显示的部分。

感谢您的任何建议。

-=布鲁斯·D·迈耶

4

2 回答 2

3

也许这就是你想要的?

您可以使用括号就地调用 cmdlet,如下所示:

Copy-Item -Path (Join-Path $template filename.ext) -Destination $destfolder

这会导致 PowerShell 从“参数模式”转到“表达式模式”——即,它将Join-Pathcmdlet 的输出作为表达式返回。

是的,David 和 Ansgar 的建议也很有帮助 - 试试这个以获得完整的路径:

(get-childitem $template) | select fullname
于 2012-11-14T05:53:38.837 回答
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] }
于 2012-11-13T23:04:57.357 回答