批處理 按照檔案的建立時間排序 獲取第一檔案

2021-06-27 09:09:44 字數 1641 閱讀 7870

示例目標:從指定的資料夾(frompath)獲取符合條件的檔案,條件是:檔名稱符合一定的規則,並且是最新建立的檔案,然後複製到(endpaht)檔案中

**示例:

@echo off

set nowdate=%date:~0,4%%date:~5,2%%date:~8,2%

set frompath=d:\copy\

set endpath=e:\temp\parse\3hourrefine\

for /f %%a in ('dir %frompath%t639%nowdate%.txt /b/a-d/a-h/a-s/o-d/tc') do (

xcopy "%frompath%%%a" "%endpath%" /k /y /c

)&goto end

:end

&exit

**說明:

echo off 關閉在cmd視窗的語句輸出

set nowdate 設定變數,獲取變數的的方法:%nowdate%

set nowdate = %date:~0,4%%date:~5,2%%date:~8,2%獲取當前系統的日期,日期格式:yyyyymmdd

set frompath=d:\copy\ 設定複製檔案的目錄

set endpath =e:\temp\parse\3hourrefine\ 設定複製檔案的存放位置

in() 設定迴圈的內容

do() 獲取變數後需要進行的操作、

dir 遍歷獲取檔案的批處理,引數說明: dir [drive:][path][filename] [...] [/p] [/w] [/d] [/a[:]attributes][/o[:]sortorder] [/t[:]timefield] [/s] [/b] [/l] [/n] [/x] [/c]

具體引數說明:

drive 碟符, path 路徑,filename 檔名,在檔名中可以通過*,?進行檔名的匹配 ,其他的引數,可以參考下面的參考部落格

部分引數說明:/b:列出每個目錄名或檔名,每行乙個(包含副檔名),注意只顯示檔名,其他的都不顯示

/a-d:/a 顯示所有的檔案,-d 只是檔案,/a-d 顯示說有的只是檔案的檔案

/a-h:-h 非隱藏的檔案,/a-h 不是隱藏檔案的檔案

/a-s:-s 系統檔案以為的檔案,/a-s 不是系統檔案的檔案

/od:/o 檔案的排序順序,d 按日期和時間,最早的優先,/od 按照檔案的時間排序,最早的在最前面

/tc:/t 控制心事或使用者排序的時間字段,c 建立,/tc 按照檔案的建立時間進行排序

xcopy "%frompath%%%a" "%endpath%" /k /y /c 進行檔案複製

"%frompath%%%a" 需要複製的檔案

"%endpath%" 檔案複製的目的檔案目錄

/k:複製屬性。一般的 xcopy 會重設唯讀屬性

/y:禁止提示以確認改寫乙個現存目標檔案,就是不提醒,就直接覆蓋在複製檔案的目的資料夾中已經存在的檔案

/c:即使有錯誤,也繼續複製,就是說,如果檔案被占有等,如果複製出錯,任然會複製

&goto end 是為了只獲取for迴圈的第乙個資料,獲取到就跳轉到end位置

:end 標記end的位置

&exit 退出

可以參考:

windows下bat批處理txt檔案獲取指定的列

將以下 複製貼上到txt檔案中,並將檔案編碼格式修改為ansi,跟要處理的檔案放乙個資料夾內執行。如下,cols引數可自行設定需要獲取哪些列的值,如 表示所有列,1,3 表示第一列第一列和第三列之後的列等等,改完此引數需要修改echo出的引數列表echo i j k以配合全部輸出。echo off ...

批處理Bat 根據當前時間自動建立資料夾

echo off set hour time 0,2 if hour leq 9 md date 0,4 date 5,2 date 8,2 0 time 1,1 time 3,2 time 6,2 else md date 0,4 date 5,2 date 8,2 time 0,2 time 3...

bat批處理以當前時間建立文字檔案

表示注釋 表示不顯示當前命令,只在後台執行 echo off 表示以後執行的命令都不顯示 set d date 0,10 表示設定變數d為當前年月日,預設表示為例如 2018 12 05 set 表示設定變數 date 0,10 表示取2018 12 05的從0開始但不包括0的10個字元 比如dat...