我有两个数组,每个数组包含三个元素(文件名部分)。我需要将第一个数组的第一个元素和第二个数组的第一个元素连接起来,并测试是否不为null以及是否存在combination(file name),同样,我需要以相同的方式对其他两个元素执行此操作。
$file_nameone_array = ( table, chair, comp)
$file_nametwo_array = ( top, leg , cpu)
foreach ($input_file in $file_nameone_array) {
foreach ($input_rev in $file_nametwo_array) {
$path = "D:\$input_file-$input_rev.txt"
If (test-path $path -pathtype leaf) {
write-host "$path exists and not null"}
else{
write-host "$path doesnot exist"
exit 1}
我希望测试“ table-top.txt”,“ chair-leg.txt”,“ comp-cpu.txt” 而我的代码检查“ table-leg.txt”并退出并说table-leg.txt不存在。
答案 0 :(得分:0)
您可以尝试这种方式:
$file_nameone_array = ( "table","chair", "comp") # INITILIZING ARRAY
$file_nametwo_array = ( "top", "leg", "cpu") # INITILIZING ARRAY
if ($file_nameone_array.Count -ne $file_nametwo_array.Count ) # CPMPARING BOTH ARRAY'S SIZE
{
Write-Error "Both array must have same size..." # THROW ERROR
exit # EXIT
}
for($ind = 0 ; $ind -lt $file_nameone_array.Count ; $ind++) # FOR LOOP 0 TO ARRAY'S LENGTH - 1
{
$path = "D:\\" + $file_nameone_array[$ind] + "-" + $file_nametwo_array[$ind] + ".txt" # COMBINING BOTH ELEMENTS
If (test-path $path -pathtype leaf) # CHECKING PATH EXIST OR NOT
{
write-host "$path exists and not null" # PRINT PATH EXIST
} # END OF IF
else # ELSE
{
Write-Error "$path doesnot exist" # THROW ERROR : FILE NOT EXIST
exit 1 # EXIT SCRIPT
} # END OF ELSE
} # END OF FOR LOOP
答案 1 :(得分:0)
这听起来像是作业的编码问题(即您应该弄清楚的事情),所以我只给您提示而不是答案。
Write-Output $path
来查看您实际要检查的内容。for
循环Write-Output "$($file_nameone_array[0])"
希望您能从中得到这个答案。
答案 2 :(得分:0)
如果您稍微更改示例以仅显示$ path变量,例如:
$file_nameone_array = @( "table", "chair", "comp" )
$file_nametwo_array = @( "top", "leg" , "cpu" )
foreach ($input_file in $file_nameone_array) {
foreach ($input_rev in $file_nametwo_array) {
$path = "D:\$input_file-$input_rev.txt"
write-host $path
}
}
您将获得此输出
D:\table-top.txt
D:\table-leg.txt
D:\table-cpu.txt
D:\chair-top.txt
D:\chair-leg.txt
D:\chair-cpu.txt
D:\comp-top.txt
D:\comp-leg.txt
D:\comp-cpu.txt
因此您可以看到为什么它将“ D:\ table-top.txt”作为第一个文件。
相反,您可以做的是:
$file_nameone_array = @( "table", "chair", "comp" )
$file_nametwo_array = @( "top", "leg" , "cpu" )
for( $index = 0; $index -lt $file_nameone_array.Length; $index++ ) {
$input_file = $file_nameone_array[$index];
$input_rev = $file_nametwo_array[$index];
$path = "D:\$input_file-$input_rev.txt"
write-host $path
}
现在您将获得此输出
D:\table-top.txt
D:\chair-leg.txt
D:\comp-cpu.txt
您可以使用原始文件检查逻辑替换写主机,并且应该获得原来的行为。
注意-这要求您的数组长度完全相同,因此您可能需要在脚本中的这段代码之前进行一些错误处理。