- ベストアンサー
PowerShellでファイル存在確認する方法とは?
- PowerShellでファイル存在確認する方法を学んでいます。
- 日付を取得してファイル名に使用し、ログファイルを作成する際に既存のフォルダが存在する場合にエラーが発生します。
- ファイルの存在確認とフォルダの作成を分岐させるために、日付を取得してファイル名を設定する方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
System.IO.StreamWriter(String, Boolean, Encoding)コンストラクタの第二引数や http://msdn.microsoft.com/en-us/library/f5f5x7kt.aspx FileStream(String, FileMode, FileAccess)コンストラクタ第三引数でなんとかすれば別に分岐は必要ない #最初の$filename取得がやたら回りくどいのは俺の好みの所為。 #System.IO.File.AppendAllText(String, String, Encoding)があまり好きではない。個人的に。 $filename = [System.IO.Path]::Combine("C:\",[System.IO.Path]::ChangeExtension([System.DateTime]::Now.ToString("yyyy-MM-dd",[System.Globalization.CultureInfo]::InvariantCulture),"log")); $str = New-Object -TypeName ("System.IO.StreamWriter") -ArgumentList ($filename,$true,[System.Text.Encoding]::UTF8) $str.WriteLine("xxxx") $str.Flush() $str.Close() ============ どうしても分岐したければ if([System.IO.File]::Exists("C:\books1.csv")){ [System.Console]::WriteLine("abc") }else{ [System.Console]::WriteLine("def") } とかやればいいけれども。
お礼
回答ありがとうございます。 $filename = [System.IO.Path]::Combine("C:\",[System.IO.Path]::ChangeExtension([System.DateTime]::Now.ToString("yyyy-MM-dd",[System.Globalization.CultureInfo]::InvariantCulture),"log" この部分が、回りくどいとおっしゃっていましたが、私にはとてもわかりやすったです。 ただ、同じように初心者の人が、修正したりする作業が発生した場合に見てわかりやすいのが分岐かな?と思ったのです。 分岐の例にあるファイル名のところがExists("C:\books1.csv")のように()内にファイルのPATHを記述すればいいのだと思うのですが、ファイル名が取得した値を利用するため変わる場合は、どう記述したらよいのかがわかりませんでした。
補足
早速の追記ありがとうございました。 確かに、力を引き上げるのが一番なんですよね(自分を含め)。 今回いただいた二つのものから、System.IOの使い方が良くわかっていない自分に気がつきました。 分岐をするにしてもしないにしても、ここがちゃんとわかってないと、つまずきから前に進めないこともよく自覚できました。 (あと、英語のサイトを避けて通らないこと) ありがとうございます。