Windows 移动重命名和压缩文件

Windows 移动重命名和压缩文件,windows,batch-file,Windows,Batch File,我的oracle服务器位于windows 2008 64位中。我需要将listner.log文件移动到 E:\DBA_CMDS\Maintenance_Tasks\ClearListenerLog\ArchivedListenerLogs 从 我需要将该文件重命名为currentdate.log,我的日志目录和日志名为 E:\DBA_CMDS\Maintenance_Tasks\ClearListenerLog\ClearListenerLog.log 我需要压缩文件后,我重命名它,我的7

我的oracle服务器位于windows 2008 64位
中。我需要将listner.log文件移动到

 E:\DBA_CMDS\Maintenance_Tasks\ClearListenerLog\ArchivedListenerLogs

我需要将该文件重命名为
currentdate.log
,我的日志目录和日志名为

E:\DBA_CMDS\Maintenance_Tasks\ClearListenerLog\ClearListenerLog.log
我需要压缩文件后,我重命名它,我的7-zip安装在

C:\Program Files\7-Zip\7Z.EXE. 
如果有人能帮助我在批处理脚本中编写所有这些内容,我将不胜感激,因为我对windows脚本还不熟悉。

测试:

@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"
)

请你重新阅读你的问题,看看是否按正确的顺序列出了细节?您是说日志文件位于
alert
文件夹中,您希望将其重命名为
20140112.log
,但随后您说日志位于不同的文件夹
ClearListenerLog
。我不太明白你的意思。lister.log的位置是:\OracleGrid\11.2.0\grid\log\diag\tnslsnr\enctcorl010\listener\alert\n我想通过重命名和ziping将它们移动到新位置。新位置是E:\DBA\U CMDS\Maintenance\U Tasks\ClearListenerLog\ArchivedListenerLogs。压缩文件的重命名类似于listener_ddmmyyy.zipok。还有一个问题-有多少日志?你说移动它们,但你只给了一个文件名。谢谢你。概念应该是,它将一个接一个地移动文件和一个接一个地压缩文件。事实上,我将oracle侦听器文件从其默认位置移动到了新位置,因为它会变得更大,从而导致性能问题。如果您能帮我编写一个日志文件的脚本,这将满足我的需要。剩下的我会处理的。再次感谢这应该行得通——这与我在他的重复问题中的解决方案类似。请注意,您不需要for循环。您可以直接使用%date%。@beel谢谢。使用
%date%
的问题是,它可能在任何给定的计算机上工作,也可能不工作,因为格式可以由用户更改,也可以在不同的区域更改。使用WMIC、VBS或Powershell以已知格式获取日期和时间是一个更好的解决方案,可以为世界上任何地方的人提供支持。感谢Foxdrive和Beel为此花费宝贵的时间。你们俩情人节快乐如果我想把另一个文件从源位置E:\OracleGrid\11.2.0\grid\log\diag\tnslsnr\el010\listener\u scan1移到同一位置,然后分别压缩,我该怎么做。我想从E:\DBA\U CMDS\Maintenance\U Tasks\ClearListenerLog\ArchivedListenerLogs中删除10天以上的zip文件。堆栈溢出的想法是通过单击旁边的灰色勾号来接受适合您的答案。如果您还有其他问题,请打开一个新问题。
@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"
)