2017-11-24 11 views
-1

私は3つのファイルで動作するスクリプトを持っています。そのうちの1つの名前は常に同じなので、スクリプトコードに直接設定されています。他の2つの名前は毎月異なっています。拡張子は作成日である前に、powershellのその部分のファイル名を読む

proemail vytvoreni_9.2017 2017-10-16.csv

proemail neaktivni_9.2017 2017-10-16.csv

最終10の文字:彼らはこのようになります9.2017(この場合)は、このレポートが関連する月を定義します。しかし、日付はすべて異なっているので、Read-Hostコマンドレットを使用せずにファイルの名前を読み取れば、スクリプトを実行するときにファイル名を尋ねることができますか?

私はスクリプトに "proemail vytvoreni_(または" proemail neaktivni_ ")で始まるファイル名からテキストを読み上げる必要があります。どうやってやるの?最後のファイル名は2番目の単語で異なります。拡張子を付けずに読み込むファイル名が必要です。

私が達成する必要があるのは分かりやすいと思います。

+1

あなたが試着したコードを投稿して、あなたがどこにいるのか確認できますか? – Manu

+0

まあまあ私はちゃんと動かず、スクリプトはうまくいきました。使いやすくしたいのです。ここでは、Read-Hostコマンドレットを使用してファイル名をスクリプト '$ 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フィルター彼ら。 3番目の静的な名前のファイルもここに追加することができます。セクションに他のファイルと同じフォルダがある場合は、-or $_.name -eq 'static filename'を追加します。

+0

これは、ファイルの名前ではなく、すべての内容をロードしました。 –

+0

OK Get-Contentを最後から削除します(更新された回答) –

+0

このように変更したときは、次のように動作します: '$ ReportPridani =(Get-ChildItem -Path $ PSScriptRoot | {$ _。Name -like 'proemail vytvoreni * '})。ToString() 'しかし、問題は、拡張子を含む名前を読み取ることです。スクリプトの後半では、スクリプトは '$ Datum = Get-Date -Date $ ReportPridani.Split("。 ")[1] .Substring($ ReportPridani)という名前の最後の10文字に基づいて動作する開始日と終了日を決定します。 get_Length() - 10) 'となります。 splitメソッドはもともとはありませんでした。文字列に拡張子が含まれているので、私は今そこに追加しました。 –

関連する問題