使用批处理复制最新文件时出错

Posted

技术标签:

【中文标题】使用批处理复制最新文件时出错【英文标题】:Error when copying the most recent file using batch process 【发布时间】:2014-10-29 16:25:00 【问题描述】:

我是批处理文件过程的新手,我按照这篇文章创建了一个脚本来复制我最近的文件。

How to code a batch file to copy and rename the most recently dated file?

@echo 关闭

setLocal DisableDelayedExpansion

推H:\

setLocal EnableDelayedExpansion

for /f "tokens=* delims= " %%G in ('dir/b/od') do (set latest=%%G)

复制 %newest% H:\archive\testFile.txt

POPD

我成功地测试了一个小文件,但是当我转移到生产环境时,我收到了这个错误:The system cannot find the file specified.

此脚本对文件大小有任何限制吗?测试的大小差异为 1kb,生产的大小差异为 6.5mb。除了测试文件的内部内容之外,这是我能想到的唯一区别。

【问题讨论】:

如果将('dir/b/od') 更改为('dir/b/od/a-d') 会怎样? @npocmaka 没什么新鲜的。 【参考方案1】:

不,尺寸不是问题。该文件在磁盘中,您所做的只是复制它。也许没有空间,你不能复制文件,但这里不是这样。

问题可能是文件名中的空格和一些缺少的引号。

@echo off
    setLocal enableextensions disabledelayedexpansion

    set "newest="
    for /f "delims=" %%G in ('dir /b /a-d /od "H:\"') do set "newest=%%~fG"
    if defined newest copy "%newest%" "H:\archive\testFile.txt" /y

【讨论】:

我在 prod 文件中确实有一些空格。我删除了它们,原始脚本运行良好。谢谢!

以上是关于使用批处理复制最新文件时出错的主要内容,如果未能解决你的问题,请参考以下文章

用于复制大于 700MB 的最新文件的批处理脚本

如何编写 Windows 批处理脚本以从目录中复制最新文件?

批处理 移动文件 到当前目录 求解

批处理文件只运行一次,FOR循环出错

使用最新插件启动eclipse RCP应用程序时出错(Eclipse 4.8)

批处理命令通过通配符名称获取最新文件