簡體   English   中英

批處理文件以從上次修改的文件夾中獲取文件

[英]batch file to get file from last modified folder

我有一個比較兩個文件的批處理文件,如果時間戳不同,則使用 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"
...

有什么方法可以讓我的批處理文件檢查“上次修改”文件夾並從那里獲取文件? 如果有幫助,我需要的文件將始終具有相同的名稱,那么我可以檢查父文件夾的目錄以查找上次修改的文件嗎?

如果之前有人問過類似的問題,我們深表歉意。

未測試

@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%的文件。 然后您可以重用您的代碼。

如果你想在 C:\apps\test 目錄中找到最后修改的文件夾名稱,那么你可以將下面的代碼片段放在批處理腳本中並執行它,這將打印最后修改的文件夾名稱的名稱。

@echo OFF

for /f "delims=" %%i in ('dir "C:\apps\test" /b /ad-h /t:c /o-d') do (
    set latestModifiedFolderName=%%i
    goto :break
)

:break
echo Latest modified folder within C:\apps\test directory is %latestModifiedFolderName%

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM