2013-10-02 35 views
1

我有一個批處理文件,通過使用「移動」命令完全正常工作,將DLL文件從C:\Program Files\directory\file.dll重命名爲C:\Program Files\directory\file.dll.orig。 批處理文件的下一部分使用「複製」命令將file.dll的新版本從網絡位置複製到C:\Program Files\directory\,該命令也可以很好地工作。 我有這個腳本作爲一個GPO運行也很好。如果文件大小等於這個轉到這個else轉到

原始DLL文件爲38,892 KB,從網絡位置複製的DLL文件爲38,856 KB。 我不希望每次用戶重新啓動計算機時都要替換此文件。我想修改腳本,以便檢查位於C:\Program Files\directory\位置的DLL文件是否爲38,892 KB,如果是,則會將新DLL文件複製到該位置,但如果它是38,856 KB,則會退出該腳本。 如何將if語句放入批處理文件以檢查此問題?謝謝。

回答

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 

見的幫助 「爲」 與 「呼」 地理解 「%〜Z1」。

+0

對於批處理文件的使用和命令行的使用,您有%%和%的混合。它現在無法工作。 – foxidrive

+0

謝謝。我修好了它。 – joeking

0

或者將其用作第一行:請注意,文件大小以字節爲單位。

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