【问题标题】:how can i write a script to find the latest updated file and copy to certain directory我如何编写脚本来查找最新更新的文件并复制到某个目录
【发布时间】:2011-03-12 22:00:46
【问题描述】:

我有一个从网络浏览器下载文件的进程。它始终具有相同的名称(无法更改),因此每个文件都被下载为 file([latestnumber])

所以在这个目录中我有:

乔.pdf
乔(1).pdf
乔(2).pdf
等等 。 . .

我现在想要一个脚本来获取“最新文件”(在本例中为 joe(2).pdf)并将其复制到另一个目录。

类似于 GetLatestFile("joe") 并复制到 "X:\mydirectory"

谁能想到一个简单的方法来做到这一点。

【问题讨论】:

  • 如果能按日期复制最新的就容易多了……
  • @belisarius - 那也很好。 .你有什么建议

标签: language-agnostic windows-xp file-copying


【解决方案1】:

您对编写脚本的语言有偏好吗?

我不会使用文件名,我会选择您要使用的任何脚本语言,遍历目录并查看每个文件的文件属性以选择最新的文件,然后移动它到你的目标目录。这在具有 System.IO 命名空间中可用类的 .NET 控制台应用程序中是相当简单的。 (即 DirectoryInfo、FileInfo 和 File 类)

【讨论】:

  • 我想看看是否可以在 .bat 脚本中执行此操作,但我对任何语言都持开放态度
  • 我确信这可以通过 .bat 脚本实现,但 C# 将是我的首选。 (可能是因为这是我最常使用的)
【解决方案2】:

试试这个:XCOPY C:\BATCH\*.* C:\UPLOAD /M

将代码放在一个文本文件中并将其重命名为whateveryouwant.bat并执行。

请务必根据自己的喜好编辑源文件夹和目标文件夹。

这是你要找的吗?

【讨论】:

  • 我认为他只想复制最新的文件,而不是全部。
  • 我只想复制最新的文件(不是全部)
  • 这只会在第一次复制。之后,它将始终只复制最新的。不好?
  • 该目录中有一大堆我不想复制的东西
  • 嗯,XCOPY C:\BATCH\joe*.pdf C:\UPLOAD /M 像这样?
【解决方案3】:

所以,由于按日期排序最新文件名就足够了,我建议如下:

@echo off & setLocal enabledelayedexpansion

for /f "tokens=* delims= " %%a in ('dir /b/a-d/o-d') do (
set N=%%~Fa
goto :done
)
:done
echo !N!

将最后一个回显命令替换为“复制...”或您想要对最新文件执行的任何操作。

HTH!

编辑>如果文件不在当前目录,相应地更改“dir”命令

【讨论】:

    【解决方案4】:

    这使用 sed 和正则表达式 http://gnuwin32.sourceforge.net/packages/sed.htm

    它会生成一个 bat 文件来完成这项工作。 我已将 bat 文件放在 c:\crp 中,因此它不会成为最新文件。

    作为演示,我创建了一个最新文件 latestfile.txt

    您可以看到生成 copyit.bat 的行,并且可以对其进行修改,以便文件准确地到达您想要的位置。

    C:>md c:\crp

    C:>copy /y con latestfile.txt

    fgfdgd^Z

    已复制 1 个文件。

    C:>dir /o-d/a-d/b |查找 /N /V "QWERTY" |找到“[1]”| sed -e s/[1](.*)/cop y\d32\1\d32c:\newdir/>c:\crp\copyit.bat

    C:>输入 c:\crp\copyit.bat

    复制 latestfile.txt c:\newdir

    【讨论】:

      猜你喜欢
      • 2010-09-10
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多