1

我是新来的,我的英语不是很好所以首先,请原谅我。

我的问题是这批继续读取变量“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)
4

2 回答 2

0

您的文件名 %FSIZE% 中有空格。作为空格后的结果文本,它被视为if. 尝试使用引号"%FSIZE%"CD首先对文件夹进行操作,而不是仅检查文件名。

于 2012-11-19T05:01:46.827 回答
0

您有几个小错误:

  • 如果文件名可能有空格,则在所有情况下都必须用引号括起来:

如果存在 "%FSIZE%" (

  • FOR /F 用于读取文件内容。如果要处理文件 NAME,请不要使用 /F 选项,而是使用普通 FOR 命令:

FOR %%A IN ("%FSIZE%") DO SET SIZE=%%~ZA

  • IF 命令的 ELSE 部分必须单独出现在一行中:

转到 CIFILES5x

) 别的 (

  • 括号也是一样的:

转到 CIFILES5x

)

  • 除非左括号出现在同一行。这是对的:

如果存在 "%TEMP%\9513.CES" (GOTO OPS) ELSE (GOTO LNKD)

  • 如果您比较数字是否相等(EQU,NEQ),那么它们是否用引号括起来并不重要。就 GTR、GEQ、LSS 和 LEQ 而言,它们必须没有引号。但是,就您而言,这不是问题...
于 2012-11-19T14:10:00.150 回答