2016-09-02 11 views
1

でファイルサイズGT 0を確認する私は私の主題に関するヘルプを検索でしたが、私は必要なものに近いものを見つけられませんでした、そして、ここで私の疑問です0より大きい場合は処理を続行し、そうでなければ出力メッセージを書き出して失敗コード= 1を送信します。は、PowerShellの

私は以下を試しましたが成功しませんログにメッセージを書き込む:

$FileExists1 = "D:\TEST\FILE\test.txt" 

IF (Test-Path $FileExists1) { 
    If ((Get-Item $FileExists1).length -gt 0kb) { 
     Write-Output [$(Get-Date)]:" FILE IS OK FOR PROCESSING! - RC = $rc" 
    } 

Else { 
     $rc = 1 
     Write-Output [$(Get-Date)]:" FILE HAS 0 BYTES AT D:\TEST\FILE\" 
     Write-Output [$(Get-Date)]:" VALIDATION FINISHED - RC = $rc" 
     Exit $rc 
    } 
} 

私は何ができるのですか?

ありがとうございました!

+1

"ファイル"と "サイズ"ではなく、質問しているプログラミング言語でタグを付けると、より良い回答が得られます –

+1

ありがとう、ちょうどそれを更新しました。 – DevHawk

+0

「*ログにメッセージを書き込むと成功しません:*」とは何ですか?どのようなログですか? – TessellatingHeckler

答えて

1

より大きい場合\ example.log

また、あなたの変数$ rcが定義されていません。ただし、 "$ rc"に初期値を指定してください。あなたは同じスコープで再びコードを実行した場合

PS C:\WINDOWS\system32> 

$FileExists1 = 'E:\Work\Powershell\scripts\demo\demo.txt' 

IF (Test-Path $FileExists1) { 
    If ((Get-Item $FileExists1).length -gt 0kb) { 
     Write-Output [$(Get-Date)]:" FILE IS OK FOR PROCESSING! - RC = $rc" 
    } 

Else { 
     $rc = 1 
     Write-Output [$(Get-Date)]:" FILE HAS 0 BYTES AT D:\TEST\FILE\" 
     Write-Output [$(Get-Date)]:" VALIDATION FINISHED - RC = $rc" 
     Exit $rc 
    } 
} 
[09/02/2016 23:55:15]: FILE HAS 0 BYTES AT D:\TEST\FILE\ 
[09/02/2016 23:55:15]: VALIDATION FINISHED - RC = 1 

しかし、変数$ RCの値は1だから、必ず、あなたは0または何か他のものに価値を再初期化しますされますので、それは可能性があります間違った結果をもたらすことはありません。

+0

ええ、私は$ rc = 0として初期化しましたが、ここにコピー&ペーストの問題がありました。この問題は、Autosysでこれを使用しているようです。 :( – DevHawk

+0

あなたの質問はAutosysを参照するべきで、どのようにそれを使用していますか? –

0

ログの出力に問題がありますか?書き込み出力はコンソールホストに書き込みます。代わりにアウトファイルまたはティーオブジェクトを使用する

"[$(Get-Date)]: 'ファイルはD:\ TEST \ FILE \'にあります。アウトファイルD:ファイルがコードは絶対にうまく動作します0