2017-11-24 3 views
-1

세 파일과 함께 작동하는 스크립트가 있습니다. 그 중 하나의 이름은 항상 동일하므로 스크립트 코드에서 직접 설정됩니다. 다른 두 명의 이름은 매월 다릅니다. 그들은 다음과 같이 :powershell에서 파일 이름 읽기

proemail의 vytvoreni_9.2017 2017-10-16.csv

proemail neaktivni_9.2017 2017-10-16.csv

마지막 10 자 확장 창조의 날짜 전에, 9.2017 (이 경우)은이 보고서가 어느 월에 해당되는지 정의합니다. 하지만 날짜가 다르기 때문에 Read-Host cmdlet을 사용하지 않고 파일 이름을 읽으면 스크립트가 실행될 때 파일 이름을 묻는 지 궁금합니다.

이제 스크립트에 "proemail vytvoreni_ (또는"proemail neaktivni_ ")로 시작하는 파일 이름의 텍스트를 읽어야합니다. 어떻게해야합니까? 마지막 파일 이름은 두 번째 단어와 다릅니다. 확장명없이 파일 이름을 읽어야합니다.

내가 이해할 수 있으면 좋겠다.

+1

시도한 코드를 게시하여 어디서 붙어 있는지 확인할 수 있습니까? – Manu

+0

글쎄요, 정확하게 스크립트가 제대로 작동하지 않습니다. 그냥 사용하기 쉽게 만들고 싶습니다. 이제 Read-Host cmdlet을 사용하여 파일 이름을 스크립트 '$ ReportAdded = Read-Host'로 가져옵니다. 추가 된 사용자 보고서의 파일 이름 "및 $ ReportRemoved = Read-Host"제거 된 사용자 보고서의 파일 이름 " 파일 이름을 자동으로 가져 오는 절차로 바꾸고 싶습니다. –

+0

'Get-Content -File "C : \ temp \ proemail vytvoreni *"'? 주의 할 점은 파일이 여러 개 있으면 모두 읽을 수 있다는 것입니다. 따라서 당신이 확신 할 수 있거나 확인 논리를 가질 수있는 한 여기서 문제를 보지 못합니다. – Matt

답변

0

파일이 $PSScriptRoot에 해당하는 디렉토리에 있다고 가정하면이 작업이 가능합니다.

$ReportPridani = Get-ChildItem -Path $PSScriptRoot | Where {$_.Name -like 'proemail vytvoreni*' -or $_.Name -like 'proemail neaktivni*'} 

Get-ChildItem 나열 디렉토리에있는 파일, Where 그들을 필터링합니다. 여기에 세 번째 정적으로 이름 붙여진 파일도 넣을 수 있습니다. 다른 파일과 동일한 폴더에있는 경우 을 Where {} 섹션에 추가하십시오.

+0

파일의 이름이 아닌 모든 내용을로드했습니다. –

+0

Ok Get-Content (업데이트 된 답변) –

+0

끝 부분에서 Get-Content 만 제거하면 수정됩니다.'$ ReportPridani = (Get-ChildItem -Path $ PSScriptRoot | 여기서 {$ _. Name -like 'proemail vytvoreni * '}) .ToString()'문제는, 확장자를 포함한 이름을 읽는 것입니다.스크립트의 뒷부분에서 스크립트가'$ Datum = Get-Date -Date $ ReportPridani.Split (".") [1] .Substring ($ ReportPridani.) 이름의 마지막 10자를 기반으로 작동해야하는 시작 날짜와 종료 날짜를 결정합니다. get_Length() - 10)'. split 메소드는 원래 존재하지 않았고, 문자열에 확장이 포함되어 있으므로 지금 거기에 추가했습니다. –

관련 문제