我有一个批处理文件,通过使用“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语句来检查?谢谢。
答案 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