2012-12-16 4 views
0

먼저 로컬 저장소에서 파일을 만들고 원격 저장소에 복사 한 후 powershell을 통해 파일을 만들고 복사 한 후 수백 개의 폴더 &을 복사해야합니다. 그러나 foreach 루프가 실행되면 매 40 분마다 파일/폴더를 차단하는 "다른 프로세스"로 인해 쓰기 시도가 실패합니다. 현재 모든 파일 생성 (100ms) 사이에 간단한 절전 모드로 문제를 해결했습니다. 그러나 이것을 할 수있는 더 좋은 방법이없는 것인지 궁금합니다. 특히 여러 파일을 복사 할 때 수면은 네트워크 대기 시간에 따라 달라 지므로 나에게 좋은 해결책 인 것 같지 않습니다.여러 파일 복사/생성

다른 작업을 시작하기 전에 파일의 쓰기 작업이 완료 될 때까지 "대기"할 수 있습니까? 또는 한 프로세스에서 파일이 여전히 차단되었는지 확인하고 다시 해제 될 때까지 기다리십시오.

+0

파일을 어떻게 작성하고 있습니까? 처리해야 할 .NET Stream 또는 StreamWriter 객체를 사용하고 있습니까? –

+0

나는 단순한'Set-Content'를 사용하고 있습니다. – masi

+0

Bummer 그러면 Set-Content가 생성 한 닫는 파일을 처리해야합니다. 파일을 만든 직후에 파일을 검사하는 AV 소프트웨어가있을 수 있습니까? BTW 당신이 Set-Content를 사용하고 있다면 명령은 끝날 때까지 완료되지 않으므로 "대기"가 필요하지 않습니다. –

답변

0

작업으로 코드를 실행 해 보았습니까? 예 : 또한 계속 진행하기 전에 완료하기 위해 모든 기다릴 Get-Job | Wait-Job를 사용해서 여러 개의 일자리를 창출하도록 확장하고, 수

foreach ($file in $files) { 
    $job = Start-Job -ScriptBlock { 
    #operation here.. 
    } | Wait-Job 
    #Log result of job using ex. $job and: '$job | Receive-Job' to get output 
} 

.

+0

나는 그것에 대해 생각해 봤지만, IMO는 해결 방법이 없기 때문에 거부되었다. 나는 2012 년에 파일을 안전하게 복사 할 수 없다는 것을 믿을 수 없다. – masi

+0

입니다. 이 작업을 수행해야하는 타사의 복사/동기화 소프트웨어를 사용합니다. 하지만 정확히 무엇이 잘못 되었습니까? 파일을 만들거나 읽는 것 (원격지로 복사)은 무엇입니까? 파일이 만들어진 후에라면 아마 바이러스 백신입니다. 이를 테스트하려면 실시간 검색을 비활성화하고 (적어도 파일을 저장 한 폴더는 제외) 다시 시도하십시오. –

+0

흠. 불행히도 더 이상 오류를 재현 할 수 없습니다. Dunno는 왜,하지만 갑자기 잠을 자지 않아도 작동합니다. – masi