windows批处理脚本复制文件并移动到备份目录

时间:2014-06-06 17:12:36

标签: windows variables batch-file

我有多个文件夹,每个文件夹都包含一个配置文件夹。在config文件夹中有一个.cfg文件和一个备份文件夹。我想将.cfg文件复制到具有日期扩展名的备份文件夹 这是我的文件夹结构:

\Folder1\config

    folder1.cfg

    \backup

\Folder2\config

    folder2.cfg

    \backup

\Folder3\config

    folder3.cfg

    \backup

上述每个文件夹都有一个配置文件夹。在每个配置文件夹中都有一个.cfg文件和一个备份文件夹。如何逐步浏览每个Folder * \ config目录并将文件夹* .cfg文件复制到备份文件夹并将其重命名为folder3.cfg.yyyymmdd?我实际上在Windows服务器上有大约40个文件夹。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

REM

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
for /f "delims=." %%a in ('wmic OS Get localdatetime  ^| find "."') do set "wmicdt=%%a"
SET "wmicdt=%wmicdt:~0,8%"
FOR /f "delims=" %%a IN ('dir /b /ad "%sourcedir%" ' ) DO (
 IF EXIST "%sourcedir%\%%a\config\%%a.cfg" (
  MD "%sourcedir%\%%a\config\backup" 2>NUL
  COPY /b "%sourcedir%\%%a\config\%%a.cfg" "%sourcedir%\%%a\config\backup\%%a.cfg.%wmicdt%" >nul
 )
)

GOTO :EOF

您需要更改sourcedir的设置以适应。

SET "wmicdt=%wmicdt:~0,8%"行选择wmicdt中日期/时间字符串的前8个字符,即yyyymmdd。如果你也想要时间,只需省略这一行。

答案 1 :(得分:0)

这是你的答案。

@echo off

:loop
for /l %%g in (1,1,3) do (
        copy "Folders\Folder%%g\config\Folder%%g.cfg" "Folders\Folder%%%g\config\Backup\"
        rename "Folders\Folder%%g\config\Backup\Folder%%g.cfg" "Folder %date%.cfg"  
        timeout>nul 1
)

:end
cls
echo.
echo ========
echo = Done =
echo ========
echo.
    pause>nul

我试图制作一个带有修改日期的文件作为名称,但我遇到了一些时间问题(22-03-2012 12:22)。

这12 ==>:< == 22让我感到麻烦。我不知道怎么摆脱这个。因此,您将当前日期作为文件名。

抱歉我的英文。

Here is file with that batch and folders, so you can see how it works