1

完全に正常に動作する「移動」コマンドを使用して、DLL ファイルの名前を からC:\Program Files\directory\file.dllに変更するバッチ ファイルがあります。C:\Program Files\directory\file.dll.origバッチ ファイルの次の部分では、「copy」コマンドを使用して、新しいバージョンのfile.dllをネットワーク ロケーションから にコピーします。これも完全に正常に機能します。C:\Program Files\directory\GPO として実行されるこのスクリプトも正常に動作します。

元の DLL ファイルは 38,892 KB で、ネットワーク上の場所からコピーされる DLL ファイルは 38,856 KB です。ユーザーがコンピューターを再起動するたびにこのファイルが置き換えられるのは望ましくありません。スクリプトを変更して、そのC:\Program Files\directory\場所にある DLL ファイルが 38,892 KB かどうかを確認し、38,892 KB の場合は新しい DLL ファイルをその場所にコピーしますが、38,856 KB の場合はスクリプトを終了します。これを確認するために if ステートメントをバッチ ファイルに入れるにはどうすればよいですか? ありがとうございました。

4

2 に答える 2

1
for %%A in ("C:\Program Files\directory\file.dll") do if "%%~zA"=="38892" goto :NewIsInstalled
rem ... OK, now we know the installed DLL is not the expected size so copy in the right one.

- - または - -

for %%A in ("C:\Program Files\directory\file.dll") do call :CheckIt "%%~fA"
goto :EOF

:CheckIt
if "%~z1"=="38892" goto :NewIsInstalled
if "%~z1"=="38856" goto :OldIsInstalled
goto :SomethingElseHappened

「%~z1」を理解するには、「for」と「call」のヘルプを参照してください。

于 2013-10-02T18:47:22.207 に答える
0

または、これを最初の行として使用します。ファイルサイズはバイト単位であることに注意してください。

@echo off
for %%A in ("C:\Program Files\directory\file.dll") do if "%%~zA"=="38856" goto :EOF
于 2013-10-03T10:35:47.890 に答える