【问题标题】:batch file to get file from last modified folder批处理文件从上次修改的文件夹中获取文件
【发布时间】:2016-04-11 19:30:05
【问题描述】:

我有一个批处理文件,它比较两个文件并在时间戳不同时使用 xcopy 复制文件。所以它是这样的:

set sourcefiletime=
for %%X in (%Source%) do set sourcefiletime=%%~tX
set targetfiletime=
for %%X in (%Local%) do set targetfiletime=%%~tX
if "%sourcefiletime%" == "%targetfiletime%" goto noUpdate
xcopy...

我现在遇到的问题是文件夹结构已从始终是一个恒定的文件夹名称更改为根据日期和时间具有不同的名称。并且可能有多个文件夹。

例如

"Build_20160411_105904"
"Build_20160410_155605"
"Build_20160410_021104"
...

有什么方法可以让我的批处理文件检查“最后修改”文件夹并从那里获取文件?如果有帮助,我需要的文件将始终具有相同的名称,所以我可以检查父文件夹的目录以查找最后修改的文件吗?

如果之前有人问过类似的问题,我们深表歉意。

【问题讨论】:

  • 而且build文件夹中的文件名会一直一样?
  • 请澄清您对“上次修改”文件夹的含义:您是要收集文件夹的创建/修改日期,还是要解析文件夹名称的日期/时间部分?请注意,它们可能会有所不同...
  • 我假设最后一次修改文件夹是最后一次上传文件。所有这些文件夹都用于上传安装程序,仅此而已。我真的不在乎文件夹叫什么,我只需要其中的文件

标签: batch-file


【解决方案1】:

未测试

@echo off
set "build_dir=c:\builds"
set "source_filename=build.result"

for /f "tokens=* delims=" %%# in ('dir /b /a:d /o:-d /t:w "%build_dir%"') do (
  set "last_build_dir=%%~f#"
  goto :break
)
:break
set "source_file=%last_build_dir%\%source_filename%"

这将从 %build_dir% 中最后修改的文件夹中获取名称为 %source_filename% 的文件。然后你就可以重用你的代码了。

【讨论】:

  • 似乎完全符合我的要求。谢谢!
  • 必须添加一些额外的内容,因为我的源代码是一个 unc 路径,并且上面的代码从您运行批处理文件的位置获取最后修改
猜你喜欢
  • 2012-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多