0

我需要从 2 个 diff 目录中获取日志文件,并根据日志文件名的某些条件将它们复制到相同的目标目录中。基于日志文件名获取日志的逻辑工作正常,它们被打印到控制台。

下面是脚本:

@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:\temp2echoc:\temp1c:\temp2c:\temp3

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

copy我是批处理脚本的新手,当我添加命令时我的脚本不起作用。

4

1 回答 1

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
于 2013-10-16T09:27:48.660 回答