如果文件大小等于这个转到这个,那么转到那个

时间:2013-10-02 18:32:33

标签: batch-file if-statement

我有一个批处理文件,通过使用“move”命令将DLL文件从C:\Program Files\directory\file.dll重命名为C:\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语句来检查?谢谢。

2 个答案:

答案 0 :(得分: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”。

答案 1 :(得分:0)

或者将其用作第一行:请注意,文件大小以字节为单位。

@echo off
for %%A in ("C:\Program Files\directory\file.dll") do if "%%~zA"=="38856" goto :EOF