我正在使用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
也许这可以帮助? :)
for($i=0; $i -le $myFiles.Length; $i++){
$path = $myFiles[i]
$path = "$checkoutFolder\$path"
$myFiles[i] = $path
}
[最好开始使用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