2014-02-11 101 views
0

我的oracle服務器在windows 2008 64 bit。我需要listner.log文件從移動重命名和zip文件

E:\OracleGrid\11.2.0\grid\log\diag\tnslsnr\enctcorl010\listener\alert\ 

我需要重新命名該文件爲currentdate.log和我的日誌目錄移動到

E:\DBA_CMDS\Maintenance_Tasks\ClearListenerLog\ArchivedListenerLogs 

和日誌的名字是

E:\DBA_CMDS\Maintenance_Tasks\ClearListenerLog\ClearListenerLog.log 

我需要zip文件後,我重命名它,我的7-ZIP安裝在

C:\Program Files\7-Zip\7Z.EXE. 

我會很感激,如果有人可以幫我把所有這些寫在批處理腳本中,因爲我是windows腳本的新手。

+0

能否請你重讀你的問題,看看細節在正確的順序列出?你說的是一個日誌文件在'alert'文件夾中,你希望它們重命名爲'20140112.log',但是你會說日誌文件位於不同的文件夾'ClearListenerLog'中。我不太關注你。 – foxidrive

+0

抱歉Foxdrive, – user3297431

+0

lister.log的位置是:\ OracleGrid \ 11.2.0 \ grid \ log \ diag \ tnslsnr \ enctcorl010 \ listener \ alert \ – user3297431

回答

1

測試此:

@echo off 
set "source=E:\OracleGrid\11.2.0\grid\log\diag\tnslsnr\enctcorl010\listener\alert" 
set "target=E:\DBA_CMDS\Maintenance_Tasks\ClearListenerLog\ArchivedListenerLogs" 

for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a" 
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%" 
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%" 
set "datestamp=%DD%%MM%%YY%" & set "timestamp=%HH%%Min%%Sec%" 


setlocal enabledelayedexpansion 
set c=0 
for %%a in ("%source%\*.log") do (
set /a c+=1 
"C:\Program Files\7-Zip\7Z.EXE" a "%target%\listener_%datestamp%_!c!.7z" "%%a" 
if not errorlevel 1 del "%%a" 
) 
+0

這應該工作 - 它類似於我的解決方案,在他的重複問題http://stackoverflow.com/questions/21738820/write-script-in-batch-to-rename-and-move-the-file-in-7zip/21742942#21742942。請注意,您不需要for循環。你可以直接使用%date%。 – Beel

+1

@ beel謝謝。使用'%date%'的問題是它可能在或不可以在任何給定的計算機上工作,因爲格式可以由用戶更改,也可以在不同地區更改。在爲世界任何地方的人提供支持時,使用WMIC或VBS或Powershell以已知格式獲取日期和時間是更好的解決方案。 – foxidrive

+0

謝謝!很高興知道。 – Beel