2012-11-17 3 views
4

텍스트 파일에서 가져온 정보가 포함 된 문자열이 포함 된 두 개의 배열이 있습니다. 그런 다음 For 루프를 사용하여 두 배열을 반복하고 문자열을 함께 인쇄합니다. 그러면 폴더 대상과 파일 이름이 만들어집니다. 이상과 같이, 텍스트 파일을 소요 별도의 부분으로 분할의 imageArraylocationArray 및 기타 정보에 일부를 저장하는Powershell - 두 변수 사이의 공백 제거

Get-Content .\PostBackupCheck-TextFile.txt | ForEach-Object { $a = $_ -split ' ' ; $locationArray += "$($a[0]):\$($a[1])\" ; $imageArray += "$($a[2])_$($a[3])_VOL_b00$($a[4])_i000.spi" } 

: L:\Place\

imageArray[0]하는 것

locationArray[0]는 것 SERVERNAME_C_VOL_b001_i005.spi

그런 다음 For 루프를 실행합니다.

for ($i=0; $i -le $imageArray.Length - 1; $i++) 
    {Write-Host $locationArray[$i]$imageArray[$i]} 

그러나이 L:\Place\하고 그래서이되는 SERVERNAME_C_VOL_b001_i005.spi

사이의 공간 배치 대신 L:\Place\ SERVERNAME_C_VOL_b001_i005.spi

를, 그것은해야한다 : L:\Place\SERVERNAME_C_VOL_b001_i005.spi

내가 그것을 어떻게

를 해결할 수 ?

답변

3

옵션 # 1 - 최고의 가독성 :

{Write-Host ("{0}{1}" -f $locationArray[$i], $imageArray[$i]) } 

옵션 # 2 - 덜 읽을 수있는, 약간 혼란 : - #보다 더 많은 읽을 수

{Write-Host "$($locationArray[$i])$($imageArray[$i])" } 

옵션 # 3 2, 그러나 더 많은 라인 :

{ 
    $location = $locationArray[$i]; 
    $image = $imageArray[$i]; 
    Write-Host "$location$image"; 
} 
+0

완벽하게 작동합니다! 나는 Powershell에 상당히 익숙하다. 정확히 무엇을 하는가? – PnP

+0

@TheD :'-f'는 [String.Format]을 수행하는 Powershell 방식입니다 (http://msdn.microsoft.com/en-us/library/system.string.format.aspx). {0}과 {1} 사이에 정적 텍스트를 넣을 수 있으며 매우 읽기 쉽습니다. 옵션 # 2는 변수를 이스케이프 처리하는 것이므로 많은 달러 기호가 필요하며이를 읽고 이해하기가 더 어렵습니다. – Neolisk

+0

아하, 환상! 고맙습니다! – PnP