私はここに来たばかりで、私の英語はあまり上手ではありません。まず、ご容赦ください。
私の問題は、このバッチが変数「IF EXIST %FSIZE%」内の文字列を読み続けることです。つまり、変数が存在しない場合、バッチは () 括弧内を読み続け、代わりに残りの文字列に進みます。
%FSIZE% が存在する場合、バッチは割り当てられた 2 つのタスクを実行します。(1.) サイズが等しい場合、cifiles5x に移動します。(2.) サイズが等しくない場合、7z を使用して必要なファイルを抽出します。
%FSIZE% が存在しない場合、バッチは「765952 は現時点では予期されていませんでした」と言い続けます。
ss64.com で、数値を比較するときに括弧や引用符を使用しないなどのアドバイスを受けています (%size% EQU 765952) が、) が終了する場所まで続けない理由がわかりません。
また、コマンドを「&&」でリンクしようとしたので、括弧を消去できますが、結果は同じです。
引用符なしで 2 つの間隔をあけたパッチがあることはわかっています。私が行った場合、サイズチェッカーが機能しないため、それらは引用されていません。
これを読んでくれてありがとう。 編集:提案に従ってバッチが変更されました。
@ECHO OFF
TITLE Log checker
COLOR 0F
SET FSIZE=%ProgramFiles(x86)%\Ces\Log Files Ver\LogVbReg_r2.dll
SET InsDIR=%ProgramFiles(x86)%\Ces\Log Files Ver\
REM I didn't add "" on FSIZE and InsDIR because if i did, quote the variable will
REM result a doubled quoted patch and won't work.
CLS
ECHO ==============================================================================
ECHO = Log checker =
ECHO ==============================================================================
ECHO Checking if exist:
ECHO "%FSIZE%"
IF EXIST "%FSIZE%" (
ECHO It does exist, checking size...
FOR %%A IN ("%FSIZE%") DO SET SIZE=%%~ZA
IF "%SIZE%" EQU "765952"
ECHO Size is right, jumping to CIFILES5
GOTO CIFILES5x
) ELSE (
ECHO Size is not right, extracting the needed file...
7z.exe e "Data_X.*" -o"%InsDIR%" -y "LogVbReg_r2.dll"
GOTO CIFILES5x)
ECHO Does not exist; extracting file...
REN Data_X.* Data_X.exe
Data_X.exe
TIMEOUT 2>NUL
REN DATA_X.* Data_X.dat
:CIFILES5x
ECHO Reach cifiles5x
PAUSE
IF EXIST "%TEMP%\9513.CES" (GOTO OPS) ELSE (GOTO LNKD)