2017-11-18 20 views
0

에 대해 듣고 난 PowerShell 스크립트가하고있는 다음PowerShell 스크립트 파일

이제
# Lists txt files, remove 'newline' in files, move them to another folder 

$files = @(Get-ChildItem c:\temp\*.txt) 
$outputfolder = "c:\temp\fixed" 

     foreach ($file in $files) 
       { 
       (Get-Content $file -Raw) -replace "`n",'' | Set-Content $file 
       Move-Item $file $outputfolder 
       } 

내가 깨어 새로운 청취 스크립트를 유지하는 목적으로 일부 동안주기 (또는 다른 루틴)를 추가하고 싶습니다 처리 할 파일. c:\temp 폴더에 새로운 들어오는 파일이 감지되면 스크립트는 자동으로 처리해야합니다. 아마도 "sleep"명령을 사용하여 5 초마다 디렉토리를 확인하는 것이 가능할 수 있습니다.

좋은 의견이 있습니까?

+0

나는 "-2"표를 좋아하지만 그 이유는 무엇입니까? 나는 이것이 X, Y, Z를 시도했지만 실종되지 않았다는 점을 제외하고는 좋은 질문이라고 생각합니다. 어쩌면 그는 어디서부터 시작해야할지 모르겠다. 이것을 지켜서 대답이 나오면 배울 수 있습니다. –

+0

감사합니다. @RossLyons, 나는 당신과 동의합니다. 아무도 설명없이 부정적인 의견을 표한 것은 처음이 아닙니다. 그건 그렇고, 나는 투표에 관심이 없다. 나는 내 자신의 솔루션을 발견하고 모든 포럼의 정신 인 모든 사람의 이익을 위해 게시 할 것입니다. 당신의 말에 감사드립니다. –

답변

0

개봉 된 파일을 이동하기 때문에 - 가장 쉬운 방법은 while 1 루프

1

이 작업을 수행 할 수있는 기본적인 방법으로 포장하는 것입니다 것은 :

while ($true) { 

    # Your script here 

    Start-Sleep -Seconds 5; 
} 

다음 방법은 약간 더 복잡하다. 스크립트를 .ps1 파일로 저장 한 다음 Windows 작업 스케줄러를 사용하여 5 초마다 스크립트를 실행할 수 있습니다.

두 가지 방법 모두 기본 사항이므로 이미 알고 있어야한다고 생각하는 것이 합리적입니다. 왜 사용하지 않는지 설명하지 않는 이유는 아마도 당신이 downvoted되었고 가까운 표를 얻은 이유 일 것입니다.

과 함께 Register-ObjectEvent을 사용하는 세 번째 옵션이 있습니다. 이 옵션은 상당히 고급입니다. 여기에 예제가 StackOverflowelsewhere에 있습니다. 이것은 자원 집약도가 적다는 장점이 있지만, 서비스를 제작하기위한 메소드를 사용하기 때문에 하나의 손톱을 돌리는 데 네일 건 (nailgun)을 사용하는 것과 비슷합니다.

+0

우리가 '이미 알고 있어야'하기 때문에 부정 투표는 매우 가난한 변명입니다. 나 자신과 @ 마르코 팔존 (Marc Falzone) 같은 사람들은 우리에게 그렇게 명백하지 않을 수도 있기 때문에 이런 종류의 제안을하기 위해 여기에 왔습니다. 따라서 조언을 구하십시오. "당신은 이미 이것을 알고 있어야합니다 ..."와 같은 부정적인 빛을 지적하면 내 관점에서 배우는 것을 방해 할 수 있습니다. 그 외에도! 대답 주셔서 감사합니다, 적어도 주위에 놀고 시작하는 좋은 출발점과 배울 새로운 주제를 제공합니다. –

+1

@RossLyons 나는 의견이없는 downvotes가 도움이되지 않는다는 것에 동의하며 그것이 내가했던 것처럼 대답 한 이유이다. –

0

정말 내 게시물에 대한 부정적인 투표를 이해할 수 없습니다. 이것은 몇 가지 조사와 시련 끝에 내 솔루션입니다. 그것은 다른 누군가에게 유용 할 수 있습니다.

# The following script listens for new files in a folder and processes them 
# 
# BEGIN SCRIPT 

$folder = 'c:\temp'    # My path 
$filter = '*.*'     # File types to be monitored 

$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{ # Listening function 
IncludeSubdirectories = $false    # Put "True" to scan subfolders 
EnableRaisingEvents = $true 
NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite' 
} 
$onCreated = Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action { 
$path = $Event.SourceEventArgs.FullPath    
$name = $Event.SourceEventArgs.Name     
$changeType = $Event.SourceEventArgs.ChangeType  
$timeStamp = $Event.TimeGenerated     
$destination = 'c:\temp\fixed\'      
$outfile = $destination + $name 
Write-Host "The file '$name' was $changeType and processed at $timeStamp" -ForegroundColor Yellow # Log message on the screen 
(Get-Content $path -Raw) -replace "`n",'' | Set-Content -path $outfile 
Remove-Item $path # Delete original files 
} 

# END SCRIPT