【问题标题】:A script to copy files from folders with a specific file and folder names从具有特定文件和文件夹名称的文件夹中复制文件的脚本
【发布时间】:2017-06-05 21:03:48
【问题描述】:

首先,我应该提到有一台windows机器。

现在,我想复制文件名中包含until 的文件。

我有一个名为 my data 的文件夹。我在其中有几个文件夹,它们的名称末尾有四位数字,例如my_folder_0000。我想找到这些文件夹,并将 until 作为文件名的一部分的文件复制到另一个文件夹中。

为了澄清,请看下面的例子以更好地理解结构:

my data/
   |-- /my_folder_0000/my_file_until_2010.csv
   |-- /his_folder_0001/his_file_until_2011.csv
   |-- /test
   |-- /documents

在上面的例子中,我想浏览前两个文件夹,将文件复制到我桌面上的文件夹中。

我想要一个适用于 Windows 的脚本。谢谢!

【问题讨论】:

  • 你看过 robocopy 吗? (它包含在 Windows 中。)
  • 我有 Windows 7,但在我的机器上找不到它。也许它被添加到较新的版本中?
  • 这很奇怪。它包含在所有 Windows 7 版本中。如果您打开命令提示符并只运行 robocopy - 它应该在路径中 - 您会找不到文件?它在 windows\system32\robocopy.exe 中。
  • 找到了!谢谢。但是如何使用它来创建一个使用问题中提到的模式查找文件和文件夹的脚本呢?

标签: regex batch-file xcopy


【解决方案1】:

这应该让你知道如何去做:

@echo off& setlocal
for /d %%d in ("%~1\*.*") do set dir=%%d& call :next_dir %2
exit /b

:next_dir
for /f "delims=0123456789" %%i in ("%dir:~-4%") do exit /b
copy /y "%dir%\*until*.*" %1 | find "until"

在命令行中,第一个参数是源目录(在你的情况下可能是“\my data”),第二个参数是复制文件的目标目录。

现有/重复命名的文件在目的地被覆盖而不提示。文件名在复制时显示。

【讨论】:

  • 它做了我想要的。谢谢!您是否有任何教程/参考可以推荐,以便我可以了解有关此主题的更多信息?
  • 抱歉没有单一的参考——也许其他人可以推荐一两本关于这个主题的好书。从几十年前的 DOS 开始,我已经慢慢学会了 .bat 脚本。显然,stackoverflow.com 是应用命令的巧妙方法的绝佳来源。当然可以通过call /?set /?for /?等来研究微软提供的帮助并进行实验。
猜你喜欢
  • 2021-12-10
  • 1970-01-01
  • 2017-04-16
  • 1970-01-01
  • 1970-01-01
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
  • 2016-01-09
相关资源
最近更新 更多