2017-02-10 3 views
0

폴더의 파일 이름을 구문 분석하고 파일 이름의 일부를 변수에 저장하려고합니다. 검사! 그런 다음 변수 중 하나를 가져 와서 해당 폴더 이름이 다른 위치에 있는지 확인한 다음 해당 폴더 이름이 아닌지 확인합니다. Write-Host을 사용하면 폴더 이름이 유효한 경로이고 폴더 이름이 존재하지 않지만 스크립트를 실행하면 폴더가 아직 만들어지지 않습니다.Powershell이 ​​없으면 폴더 만들기

폴더가 없으면 어떻게해야합니까?

$fileDirectory = "C:\Test\" 
$ParentDir = "C:\Completed\" 
foreach ($file in Get-ChildItem $fileDirectory){ 

    $parts =$file.Name -split '\.' 

    $ManagerName = $parts[0].Trim() 
    $TwoDigitMonth = $parts[1].substring(0,3) 
    $TwoDigitYear = $parts[1].substring(3,3) 

    $FolderToCreate = Join-Path -Path $ParentDir -ChildPath $ManagerName 

    If(!(Test-Path -path "$FolderToCreate\")) 
    { 
     #if it does not create it 
     New-Item -ItemType -type Directory -Force -Path $FolderToCreate 
    } 

} 
+0

노력이 : 새로운 품목 -ItemType 디렉토리 -Force -Path C : 그 \ \ \ 경로는 \ 수 또는 \ 완벽하게 작동하는지 –

답변

5
if (!(Test-Path $FolderToCreate -PathType Container)) { 
    New-Item -ItemType Directory -Force -Path $FolderToCreate 
} 
+0

을 존재하지 \ \ 수 있습니다! 감사합니다. – BellHopByDayAmetuerCoderByNigh

0

다른 솔루션 :

if (![System.IO.Directory]::Exists($FolderToCreate)) 
{ 
    New-Item -ItemType Directory -Force -Path $FolderToCreate 
} 
1

이 시도 : 을 키는 (-Force), 그것은 그들이 존재하지 않을 때마다 하나의 하위 디렉토리를 확인, 그것은 간단하게 만들 것 다음에 가서 오류를 던지지 마십시오.

아래 예에서 7 개의 중첩 된 하위 디렉토리가 필요하며 한 줄만 있으면 존재하지 않는 사람을 만들 수 있습니다.

다른 점은 시간을 다시 실행할 수 있으며 오류가 발생하지 않도록 설계되었습니다!

New-Item -ItemType Directory -Force -Path C:\Path\That\May\Or\May\Not\Exist 
+0

이 코드 스 니펫은 환영 받고 도움을 줄 수도 있지만, 설명을 포함하면 크게 개선 될 것입니다 (// meta.stackexchange.com/q/114762). 그것이 없으면 당신의 대답은 교육 가치가 훨씬 낮아집니다 - 당신이 지금 묻는 사람이 아니라 미래의 독자들에게 질문에 답하고 있다는 것을 기억하십시오! 설명을 추가하려면 답을 편집하고 어떤 제한 및 가정이 적용되는지 표시하십시오. –

+0

전체 나무를 만들기 위해 힘의 필요성을 지적하기위한 Upvoting. – GermanC