2014-02-11 82 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