示例目標:從指定的資料夾(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...