我有以下要求
从2个diff目录中获取日志文件,并根据日志文件名的某些条件将它们复制到同一目标目录中。基于日志文件名获取日志的逻辑工作正常,它们被打印到console.Below是脚本。
@ECHO OFF
for /f "delims=" %%F in (
dir /b "C:\temp1\*web_feed*.out*.gz"^|findstr "^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.) do if "%%F" geq "20130101" if "%%F" lss "20130931" echo %%F
for /f "delims=" %%F in ('dir /b "C:\temp2\*web_feed*.out*.gz"^|findstr "^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.) do if "%%F" geq "20130101" if "%%F" lss "20130931" echo %%F
pause "Please enter any key to continue"
现在上面的脚本根据日期条件从c:\temp1
和c:\temp2
引入日志文件,并使用echo
打印到控制台,但我希望将这些日志文件复制到目标目录,所以请告诉我在哪里需要添加复制条件,以便从c:\temp1
和c:\temp2
目录中获取的日志文件被复制到c:\temp3
目录中。
我也可以一步完成从2个不同目录中处理日志文件的重复步骤,而不是单独目录的2个单独步骤。
我是批处理脚本的新手,当我添加copy
命令时,我的脚本无效。
答案 0 :(得分:1)
你的脚本坏了,我已经纠正了我认为的明显错误,并添加了将文件复制到c:\temp3
的代码,并在文件名中添加了一个前缀 - 好像两个文件夹中的文件名相同然后他们会互相覆盖。
@echo off
md "c:\temp3" 2>nul
pushd "C:\temp1\"
for /f "delims=" %%F in ('dir /b "*web_feed*.out*.gz"^|findstr "^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\."') do if "%%F" geq "20130101" if "%%F" lss "20130931" copy "%%F" "c:\temp3\temp1-%%F"
popd
pushd "C:\temp2\"
for /f "delims=" %%F in ('dir /b "*web_feed*.out*.gz"^|findstr "^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\."') do if "%%F" geq "20130101" if "%%F" lss "20130931" copy "%%F" "c:\temp3\temp2-%%F"
popd
pause