Powershell将文本连接到变量

Powershell将文本连接到变量,powershell,Powershell,我的源文件都位于一个文件夹中,其路径包含在名为$template的变量中。 我需要指定每个文件到达不同目的地时的确切文件名 我的目标只是将文件名连接到变量 例如: $template = "D:\source\templatefiles\" 文件名1为:graphic-183.jpg 我试过: Join-Path $template graphic-183.jpg 在cli上发布此命令似乎可以实现我的目的 但是现在,除了为每个文件创建一个新变量之外,我如何引用这个连接的文件路径呢?这并不像在

我的源文件都位于一个文件夹中,其路径包含在名为$template的变量中。 我需要指定每个文件到达不同目的地时的确切文件名

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

例如:

$template = "D:\source\templatefiles\"
文件名1为:graphic-183.jpg

我试过:

Join-Path $template graphic-183.jpg
在cli上发布此命令似乎可以实现我的目的

但是现在,除了为每个文件创建一个新变量之外,我如何引用这个连接的文件路径呢?这并不像在列表中查找下一个文件那样简单,而是取决于决定文件位置的文件名

我在玩弄别的案子,埃尔塞夫,但肯定没那么难

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

编辑 我只是编辑了这个,因为我忘了提到我是如何使用它的

在我的脚本中,我希望有这样的行:

复制项目-路径$template filename.ext-目标$dest文件夹

正是上面突出显示的部分,我正试图将$template加入到文件名中

谢谢你的建议


-=Bruce D.Meyer

您可以这样构建路径:

$template = "D:\source\templatefiles\"
Copy-Item -Path "${template}filename.ext" ...
$locations = @{
  "foo" = "C:\some",
  "bar" = "C:\other",
  ...
}

Get-ChildItem $template | % { Copy-Item $_ $location[$_.Name] }
然而,我认为大卫的建议可能是解决你问题的更好办法。您可以使用哈希表将文件名映射到目标文件夹,并执行以下操作:

$template = "D:\source\templatefiles\"
Copy-Item -Path "${template}filename.ext" ...
$locations = @{
  "foo" = "C:\some",
  "bar" = "C:\other",
  ...
}

Get-ChildItem $template | % { Copy-Item $_ $location[$_.Name] }

您可以这样构建路径:

$template = "D:\source\templatefiles\"
Copy-Item -Path "${template}filename.ext" ...
$locations = @{
  "foo" = "C:\some",
  "bar" = "C:\other",
  ...
}

Get-ChildItem $template | % { Copy-Item $_ $location[$_.Name] }
然而,我认为大卫的建议可能是解决你问题的更好办法。您可以使用哈希表将文件名映射到目标文件夹,并执行以下操作:

$template = "D:\source\templatefiles\"
Copy-Item -Path "${template}filename.ext" ...
$locations = @{
  "foo" = "C:\some",
  "bar" = "C:\other",
  ...
}

Get-ChildItem $template | % { Copy-Item $_ $location[$_.Name] }

也许这就是你想要的

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

Copy-Item -Path (Join-Path $template filename.ext) -Destination $destfolder
这会导致PowerShell从参数模式转换为表达式模式-即,它将Join-Path cmdlet的输出作为表达式返回

是的,David和Ansgar的建议也很有帮助-尝试以下方法仅获取完整路径:

(get-childitem $template) | select fullname

也许这就是你想要的

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

Copy-Item -Path (Join-Path $template filename.ext) -Destination $destfolder
这会导致PowerShell从参数模式转换为表达式模式-即,它将Join-Path cmdlet的输出作为表达式返回

是的,David和Ansgar的建议也很有帮助-尝试以下方法仅获取完整路径:

(get-childitem $template) | select fullname

你不能直接调用$myFiles=GetChildItem$template吗?然后,$template中的所有文件都将存储在数组$myFiles中。还是我遗漏了什么?没有。你没有错过任何东西。都是我。没有大量的连续经验。我似乎只有在我需要的时候才有写剧本的乐趣,这并不经常发生。我试着用谷歌搜索这个,但就是找不到我真正需要的东西。在这里提供的三个答案之间,我现在很好。现在,如果我能弄明白投票是怎么回事。另外两个被列为答案,你的回答David,看起来像是评论什么的。谢谢你们三位。你们不能直接调用$myFiles=Get ChildItem$template吗?然后,$template中的所有文件都将存储在数组$myFiles中。还是我遗漏了什么?没有。你没有错过任何东西。都是我。没有大量的连续经验。我似乎只有在我需要的时候才有写剧本的乐趣,这并不经常发生。我试着用谷歌搜索这个,但就是找不到我真正需要的东西。在这里提供的三个答案之间,我现在很好。现在,如果我能弄明白投票是怎么回事。另外两个被列为答案,你的回答David,看起来像是评论什么的。谢谢你们三位。这些帖子对我的工作都很有用。谢谢你花时间指导我。这些帖子对我的工作都很有用。谢谢你花时间指导我。谢谢你的帮助。这在我的项目中仍然很有用。谢谢你的帮助。这在我的项目中仍然非常有用。