将文件夹名称添加到数组中的路径

问题描述 投票:0回答:2

我正在使用foreach语句将文件夹名称添加到(相对)路径的数组的开头,但是它没有对该数组进行任何更改(也没有错误)

注意:这更多的是出于教育目的,而不是功能,因为我已经使用了已注释掉的for循环来使它起作用,但是我有兴趣学习foreach语句的工作原理

$myFiles = @(
    "blah1\blah2\file1.txt"
    "blah3\blah4\file2.txt"
    "blah5\blah6\file3.txt"
)

$checkoutFolder = "folder1"

#for ($h = 0; $h -lt $myFiles.Length; $h++) {
#$myFiles[$h] = $checkoutFolder + "\" + $myFiles[$h]
#}

foreach ($path in $myFiles) {
$path = $checkoutFolder + "\" + $path
}

$myFiles

我也尝试过使用缓冲变量,例如

$buffer = $checkoutFolder + "\" + $path
$path = $buffer

但结果相同,即输出:

blah1\blah2\file1.txt
blah3\blah4\file2.txt
blah5\blah6\file3.txt
windows powershell filenames string-concatenation prepend
2个回答
0
投票

也许这可以帮助? :)

for($i=0; $i -le $myFiles.Length; $i++){
 $path = $myFiles[i]
 $path = "$checkoutFolder\$path"
 $myFiles[i] = $path
}

0
投票

[最好开始使用Join-Path cmdlet,以避免创建省略或加倍反斜杠的路径。

类似这样的事情可以做到:

$checkoutFolder = "folder1"
$myFiles = "blah1\blah2\file1.txt", "blah3\blah4\file2.txt", "blah5\blah6\file3.txt" | ForEach-Object {
    Join-Path -Path $checkoutFolder -ChildPath $_
}

$myFiles

输出:

folder1\blah1\blah2\file1.txt
folder1\blah3\blah4\file2.txt
folder1\blah5\blah6\file3.txt
© www.soinside.com 2019 - 2024. All rights reserved.