3

拡張子が*.ff0のゼロバイトのファイルが存在するかどうかを特定のフォルダーで見つける必要があります。「ファイルは空ではありません」というメッセージが常に表示されるため、次のスクリプトは機能しません。なにが問題ですか?

@echo off
set out="C:\test_files\*.ff0"

if "%out%" == "" ( 
  echo File does not exist.
) else if "%out%" == "0" (
   echo File is empty.
) else (
   echo File is non-empty.
) 

2番目の質問は、私のバッチファイルが後でイントラネットフォルダのどこかに配置されることです。つまり、他の人もアクセスできる可能性があります。
したがって、次のことを行うには、完全なコードを使用する必要があります。

1-ファイルの開いているインスタンスがあるかどうかを識別します。
2-ある場合は、誰かがすでにそれを使用していることをユーザーに警告し、それが閉じるとすぐに、他のユーザーがそれを開く可能性があります

4

2 に答える 2

3

これはあなたの質問の最初の部分を行います。これにより、フォルダ内のすべての.ff0ファイルが調べられ、各ファイルごとに空かどうかがわかります。コマンドの下に置き換えるか追加するecho Emptyだけで、ファイルでやりたいことを実行できます。

@echo off
setlocal enabledelayedexpansion
for /r C:\test_files %%i in (*.ff0) do (
set size=%%~zi
if !size! gtr 0 (
echo Not empty
) else (
echo Empty!
)
)
pause >nul

ファイルが開いているかどうかの確認に関しては、バッチで行うことはできないと思います。エラーをキャッチする以外に、他の適切なプログラミング言語でこれを行うための信頼できる方法があるとは思いません。

お役に立てれば。

于 2012-07-04T09:50:25.610 に答える
3

このようにするのが最善です:

@echo off
for %%a in (c:\test_files\*.ff0) do (
  if %%~za equ 0 (
    echo %%~na is empty
  ) else (
    echo %%~na is not empty
  )
)
于 2012-07-09T15:01:30.220 に答える