1

スクリプトの 1 つに次のコードがありますが、信頼性がないようです。ファイルが実際に 1 未満の場合、失敗する可能性があるようです。または、少なくともそれは誰かのためにしました。私は何か間違ったことをしていますか、これを行うためのより良い方法はありますか?

つまり、 file.txt が > 0 であることを確認します。

for /f %%i in ("file.txt") do set size=%%~zi
    rem added THIS:  if not defined size set size=0
if %size% gtr 0 (
    type file.txt >> %FNAME%
) else (
    echo     No Data Found On System >>  %FNAME%
)

編集:上流で変更したコードで問題が作成されました。基本的に、 file.txt が作成されない可能性があるようにしました。問題を再現するために、コード内で file.txt の名前を foobar.txt のような名前に変更しました。「if not defined size set size=0」を入れると、この問題は解決したようです。

4

1 に答える 1

4

私が考えることができる唯一のことは、ファイルが存在してはならないということです。その場合%%~zi、何も展開されません(0ではありません)。サイズが定義されていない場合は、後でサイズを明示的に 0 に設定することで簡単に修正できます。

for /f %%i in ("file.txt") do set "size=%%~zi"
if not defined size set size=0
if %size% gtr 0 (
    type file.txt >> %FNAME%
) else (
    echo     No Data Found On System >>  %FNAME%
)
于 2013-06-20T19:14:52.413 に答える