1

我有一个批处理文件,它通过使用“移动”命令将 DLL 文件重命名为C:\Program Files\directory\file.dllC:\Program Files\directory\file.dll.orig效果很好。批处理文件的下一部分使用“复制”命令file.dll从网络位置复制新版本,C:\Program Files\directory\该命令也可以正常工作。我有这个作为 GPO 运行的脚本,它也可以正常工作。

原始 DLL 文件为 38,892 KB,从网络位置复制的 DLL 文件为 38,856 KB。我不希望每次用户重新启动计算机时都替换此文件。我想修改脚本,以便检查该C:\Program Files\directory\位置的 DLL 文件是否为 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

请参阅“for”和“call”的帮助以了解“%~z1”。

于 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 回答