2011-09-07 42 views
2

如何使用命令檢查新文件的大小是否比正在替換的大小小得多?使用批處理腳本檢測文件損壞

我有一個每天晚上運行的批處理文件,其中包括調用一個應用程序UpdVMem.exe,該應用程序從主文件Members.Adt創建一個削減成員數據庫VMembers.Adt。這個文件然後被移動到具有相同腳本的遠程站點。

在少數站點上,按照定期的間隔VMembers.Adt將被損壞。我不知道爲什麼,因爲我們排除了表被鎖定進行編輯(通過我的Delphi會員軟件)。它通常會看起來像是一樣的大小,但不到記錄的一半。

更好的是一組命令可以檢測到這種損壞或UpdVMem.exe的執行失敗,因爲大小本身並不是最好的指標。

感謝

+0

您使用的是哪種副本?有一些專門的程序,如Unix'rsync',可能比普通文件更好。 –

+0

它只是使用標準(複製'源''目標'),但VMembers文件在生成時已損壞,因此問題不在於此。 – notidaho

+0

如果你想檢測一些東西,你需要一個規則。你的規則是什麼?文件大小

回答

5

可以使用ERRORLEVEL命令檢查的UpdVMem.exe退出代碼在批處理文件。如果您開發了UpdVMem.exe,那麼您可以使用Halt過程向批處理文件發送「有意義的錯誤代碼」(例如,在創建VMembers.Adt文件時發現某些異常)。

+0

謝謝,這是一個理想的解決方案,因爲UpdVMem.exe是我自己開發的,所以我可以放入一個或多個可能失敗的Halt。但是,由於我目前無法找到最新的源代碼,有沒有其他選擇ERRORLEVEL?因爲當前的錯誤級別總是爲0 – notidaho

+0

我不確定你在尋找什麼樣的替代方法...如果你的意思是檢測到一些其他方式(比檢測UpdVMem.exe失敗)要檢測的是VMembers.Adt文件損壞,那麼我可以不會像你寫的那樣想到「它通常看起來是相同的大小,但包含少於一半的記錄」,這就排除了檢查文件大小。所以唯一的辦法似乎是編寫一個特殊的程序來驗證文件,然後覆蓋舊的文件。 – ain

+0

你是對的,除非我找到源代碼並寫入重試,我不得不寫一個驗證程序,它使用recordCount或異常並重試。對MS命令來說,這個技術的先進程度可能是:p – notidaho