【问题标题】:Batch script to copy two different file extension (.doc and .log) to newly created folder or directory (with date)将两个不同的文件扩展名(.doc 和 .log)复制到新创建的文件夹或目录(带日期)的批处理脚本
【发布时间】:2015-02-03 12:44:30
【问题描述】:

我是脚本新手,我正在编写一个批处理文件,它将从两个不同的源/目录复制最近或新创建的文件(.doc 和 .log),并创建一个目标文件夹名称“备份(今天的日期) )" 基本上,这两个文件来自不同的来源并复制到一个文件夹中

来自 C:\Doc_backup 的 New_doc.doc
来自 C:\Log_backup
的 New_log.log 目的地:d:\file_backup\backup20140330

我下面的代码将创建一个文件夹(带有日期)并从源中复制唯一的文件。 但我不知道将两个不同的文件从不同的源复制到单个文件夹。

@echo off
setlocal
::Create Directory with date
SET dd=%date:~0,2%
SET mm=%date:~3,2%
SET yy=%date:~6,4%
SET date=%yy%%mm%%dd%
md c:\file_backup\backup%date%

set srcDir=c:\doc_backup
set srcDir2=c:\log_backup
set destdir=c:\file_backup\backup%date%
set lastmod=
pushd %srcDir%
for /f "tokens=*" %%a in ('dir *.DOC /b /od 2^>NUL') do set lastmod=%%a
if "%lastmod%"=="" echo Could not locate files.&goto :eof
copy "%lastmod%" "%destDir%"
pause

【问题讨论】:

  • .doc 和 .log 有哪些格式?它们是纯文本文件吗?你试过copy 1.doc+1.log 1.txt 吗?
  • 是的,一个普通的纯文本文件是一个 .doc。文件名每天都会随着日期和时间而变化。

标签: file batch-file copy


【解决方案1】:

所有copy任务都可以执行,假设变量srcDirdestDir被正确定义,下一个代码sn-p没有for循环:

pushd "%destDir%"
copy /B "%srcDir%\*.doc"
popd

但是,让我们更正代码中的一些错误:

@echo off
setlocal
::Create Directory with date
SET "dd=%date:~0,2%"
SET "mm=%date:~3,2%"
SET "yy=%date:~6,4%"
SET "xdate=%yy%%mm%%dd%"
md "c:\file_backup\backup%xdate%"

set "srcDir=c:\doc_backup"
set "destdir=c:\log_backup\backup%xdate%"
md "%destdir%" 2>NUL
rem set lastmod=
pushd %srcDir%
for /f "tokens=*" %%a in ('dir *.DOC /b /od 2^>NUL') do (
  rem set lastmod=%%a
  rem if "%lastmod%"=="" echo Could not locate files.&goto :eof
  copy /B "%%a" "%destDir%\"
)
pause

popd
endlocal

【讨论】:

  • 感谢 JosefZ,您的代码仅复制 .doc 文件。我有两个源目录并将两个文件(新创建的文件是 .doc 和 .txt)复制到一个目录中。我编辑了我的代码(我的第一篇文章)添加了另一个源和目标。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-18
  • 2011-04-05
相关资源
最近更新 更多