获取文件夹中最新的文件之路径

遇到了问题?请先进行搜索(中文和英文),然后在此提问

Moderators: tmplinshi, arcticir

wei9133
Posts: 4
Joined: 08 Sep 2014, 13:01

获取文件夹中最新的文件之路径

Post by wei9133 » 18 Sep 2020, 05:54

需求是这样的,我想要获得指定的文件夹里最後一个生成/修改的文件名称
(路径都是一样的,所以获得名称就可以了)
例如:
新下载了一张图片,到下载文件夹,我需要该张图片的名称连同副案名,这样才能再做移动
我知道可以用loop移动所有相同副案名的档案
像下面这个

Code: Select all

#IfWinActive,ahk_class CabinetWClass
F9::
ControlGetText,Root,edit1,A
Loop, %Root%\*.*, 0, 1
{
  SetWorkingDir,%A_LoopFileDir%
       PostMessage,0x111,28718,,, ;當前激活窗口檢視依並排
       PostMessage,0x111,30210,,, ;當前激活窗口排序依名稱
  ;filedelete,*.txt ;除前循到的目中的所有txt文件
   filedelete,Nipponsei.txt
  If (instr(FIleExist("*.jpg"),"A")) or (instr(FIleExist("*.png"),"A")) 
  {
    If (instr(FIleExist("*.mp3"),"A")) or (instr(FIleExist("*.wav"),"A")) 
    {
       FileCreateDir,Booklet
       FileMove,*.jpg,Booklet\*.jpg
       FileMove,*.png,Booklet\*.png
    }
  }
} 
return
但我要的只有该文件夹里最後一个变更的档案,且名称与副案名皆未知
有可能是文件档(txt)、图片档(jpg,png),excel档(xls)或其他任何的副案名
文件的相关指令好像没有我需求的指令
都是指定文件名称或*.副案名
就是一个下载/生成的文件自动归档的感觉,而不动到其他原本在文件夹内的旧资料。

还是有可以扫描整个文件夹,再判断哪个是最後生成/修改文件的指令?
Last edited by gregster on 18 Sep 2020, 06:08, edited 1 time in total.
Reason: Quote tags removed, [Code] tags added.
fwejifjjwk2
Posts: 76
Joined: 10 Aug 2019, 01:49

Re: 获取文件夹中最新的文件之路径

Post by fwejifjjwk2 » 18 Sep 2020, 19:51

指定資料夾內最後修改的文件移動到桌面

Code: Select all

myFolder = %A_MyDocuments%\test
destFolder = %A_Desktop%

FileList =
Loop, Files, %myFolder%\*.*, F  ; Include Files
    FileList = %FileList%%A_LoopFileTimeModified%`t%A_LoopFileFullPath%`n
	
; 依照修改日期降序排列
Sort, FileList, R

LastModifTimeandFilePath := SubStr(FileList, 1, InStr(FileList,"`n")-1)

stringIndex := InStr(LastModifTimeandFilePath, "`t") + 1
LastModificationFilePath := SubStr(LastModifTimeandFilePath, stringIndex, StrLen(LastModifTimeandFilePath))

FileMove, %LastModificationFilePath%, %destFolder%

移動指定副檔名的檔案

Code: Select all

FileMove, %A_MyDocuments%\test\*.txt, %A_Desktop%
更快的方法,但是這裡有bug

Code: Select all

; https://www.autohotkey.com/boards/viewtopic.php?f=76&t=81236&p=353590#p353590
path := "C:\Users\*.jpg"
Loop, Files, %path%, R
	stmp := (stmp > A_LoopFileTimeCreated) ? stmp : (A_LoopFileTimeCreated, flnm := A_LoopFileLongPath)
formattime, stmp, %stmp%, MM-dd-yyyy_hh:mm:ss
MsgBox % flnm "`n" stmp	

Post Reply

Return to “请求帮助”