2017-09-05 8 views
0

...などと書くことができます。ファイルが空であるか存在しない場合、どのCMDコマンドでエラーが生成されますか?

thatcommand myfile.txt && ECHO Is non-empty || ECHO Is empty or absent 

(フォームプロセッサに:。これは完全に問題を記述しない)

+0

よりアルファベット順低い空の文字列が返され、ファイルが0バイトを超えるサイズを存在している場合、それは非空でありますそれ以外の場合は空または不在です。あなたのコードが失敗した場合、あなたのコードの試行と関連する説明であなたの質問を編集して、ファイルサイズをチェックしてここに戻るコマンドを検索して試してみてください。 – Compo

答えて

1

は、あなたのコード内で同じアプローチを有する唯一つのコマンドにそれを制限するには、あなたが試すことができます

(>nul 2>nul findstr /m "^" "myfile.txt") && echo ok || echo empty or absent 

このコードでは、findstrを使用して、ファイルの内容を何かに一致する正規表現と照合し、ファイル名のみを返します(最初の一致で検索を終了します)。

  • ファイルが存在し、空でない場合、正規表現に一致するものが見つかります。コマンドは、ファイルが空の場合、すべての可能な一致とファイルが存在しない場合 セットerrorlevelから1

  • は、コマンドが直接失敗したコマンドが存在しないerrorlevel

  • クリア(ファイルが見つかりません)そしてerrorlevel1

+0

ありがとうございます。これらの2つの回答を2つの回答として投稿することができれば、私はそれを受け入れます。 – ChrisJJ

+0

@ChrisJJ、問題はありません。元の答えの2つのオプションは2つの異なる答えになりました。 –

+0

ありがとうPS関連Q:https://stackoverflow.com/questions/46085095/whats-the-benefit-of-the-brackets-here – ChrisJJ

1

に設定されているすでにコンポで指摘したように、ファイルサイズのチェックは、おそらくそれを処理するより良い方法です。ファイルが存在する場合は、1つのオプションは

for %%a in ("myfile.txt") do if "%%~za" gtr "0" (echo ok) else (echo empty or absent) 
  • 可能性があり、そのサイズは(:文字列は操作が2 よりも大きなサイズの問題を回避するために使用されている比較注意)0に対してチェックされます。

  • は、ファイルが存在しない場合、~z改質剤は"0"

+0

Downvoting。それは質問に答えません。 「例」に注意してください。 – ChrisJJ

+1

@ChrisJJ、確かに、これは露出された言葉で質問に答えることはできませんが、このアプローチがはるかに高速であるため、これを含める必要がありました。 –

関連する問題