【问题标题】:Copying files from one folder to another using batch使用批处理将文件从一个文件夹复制到另一个文件夹
【发布时间】:2014-03-21 15:09:22
【问题描述】:

我正在尝试使用批处理将一些文件从一个目录复制到另外两个目录。

首先,我创建了 3 个目录,然后,我想将以下文件复制到 backup1 和 backup2。 这些文件被命名为 010101.txt - 300101.txt(至备份 1)和 010102.txt - 300102.txt(备份 2)。

mkdir backup1
mkdir backup2
mkdir backup3
copy 1.txt C:\User\Test\Backup1
copy 2.txt C:\User\Test\Backup2

我想我必须以某种方式使用通配符,但如果我写 ?????1.txt 和 ?????2.txt 我得到一个语法错误。

【问题讨论】:

  • 这些范围是目录中唯一的文件吗?
  • 您是否在 010101.txt - 300101.txt and 010102.txt - 300102.txt 中显示 4 个文件,因为如果它们是范围,那么它们会重叠。
  • 里面有60个.txt文件和一些.bat文件和备份目录。你是这个意思吗?
  • 不,是文件。有一个名为 010101.txt 的文件,每个数字最多为 300101.txt 和另外 30 个以 02 结尾的 .txt 文件。我说得够清楚了吗?

标签: batch-file file-copying


【解决方案1】:

试试这个:

@echo off
setlocal enabledelayedexpansion

cd /d "C:\Temp\copytest"
set "b1=C:\Temp\Backup1"
set "b2=C:\Temp\Backup2"
for /l %%a in (1,1,300102) do (
  set num=%%a
  if %%a GTR 10000 if %%a LSS 100000 set num=0%%a
  if !num:~-1! EQU 1 (
     if exist !num!.txt echo copy !num!.txt %b1%
  ) ELSE (
     if !num:~-1! EQU 2 (
       if exist !num!.txt echo copy !num!.txt %b2%
     )
  )
)

在适用的情况下更改路径。在验证输出是否正确以执行实际复制后删除回声。

编辑:更简单的方法

Copy *1.txt "C:\User\Test\Backup1"
Copy *2.txt "C:\User\Test\Backup2"

【讨论】:

  • 嘿马特谢谢你的回答,但这对于我正在寻找的东西来说太广泛了。这是一个学校作业,我们正在学习编程。我必须能够解释我在做什么。根据我的老师的说法,只需使用“复制”命令和“通配符”就可以做到。我只是不知道该怎么做。再次感谢您的宝贵时间!
  • 解决了!我之前实际上已经尝试过,但省略了“。非常感谢:-)
【解决方案2】:
@ECHO OFF
SETLOCAL
SET "sourcedir=."
FOR %%b IN (1 2) DO (
 FOR /f "delims=" %%a IN (
  'dir /b /a-d "%sourcedir%\*.txt" ^| find /i "%%b.txt" '
   ) DO (
  XCOPY "%sourcedir%\%%a" "c:\user\test\backup%%b\" >nul
 )
)
GOTO :EOF

我假设您希望将目录中包含1.txt 的所有文件复制到...\backup1,将包含2.txt 的文件复制到...\backup2。

我使用当前目录进行测试。您需要更改分配给“sourcedir”的值以适合自己。

请注意,xcopy 将在必要时创建目标目录。

【讨论】:

  • 感谢您的帮助!虽然找到了一个更简单的解决方案。但感谢您的宝贵时间。
  • 首先我想创建带有日期和时间的备份文件夹,然后我想在上面粘贴文件,我该怎么做?
猜你喜欢
  • 2010-11-02
  • 1970-01-01
  • 2021-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-10
  • 2011-06-03
  • 1970-01-01
相关资源
最近更新 更多