0

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

所以在这个目录中我有:

joe.pdf
joe(1).pdf
joe(2).pdf
等 . .

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

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

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

4

4 回答 4

2

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

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

于 2010-07-07T16:10:05.713 回答
1

因此,由于获得按日期排序的最新文件名就足够了,我建议如下:

@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!

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

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

于 2010-07-07T23:28:57.590 回答
1

这使用 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:>目录/od/ad/b | 查找 /N /V "QWERTY" | 找到“[1]”| sed -es/[1](.*)/copy y\d32\1\d32c:\newdir/>c:\crp\copyit.bat

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

复制 latestfile.txt c:\newdir

于 2010-07-10T10:07:42.347 回答
1

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

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

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

这是你要找的吗?

于 2010-07-07T16:17:33.043 回答