使用批处理复制最新文件时出错
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 文件中确实有一些空格。我删除了它们,原始脚本运行良好。谢谢!以上是关于使用批处理复制最新文件时出错的主要内容,如果未能解决你的问题,请参考以下文章
如何编写 Windows 批处理脚本以从目录中复制最新文件?