需要有关COPY命令的帮助

时间:2013-10-15 23:53:54

标签: windows batch-file

我有以下要求

从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:\temp1c:\temp2引入日志文件,并使用echo打印到控制台,但我希望将这些日志文件复制到目标目录,所以请告诉我在哪里需要添加复制条件,以便从c:\temp1c:\temp2目录中获取的日志文件被复制到c:\temp3目录中。

我也可以一步完成从2个不同目录中处理日志文件的重复步骤,而不是单独目录的2个单独步骤。

我是批处理脚本的新手,当我添加copy命令时,我的脚本无效。

1 个答案:

答案 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