簡體   English   中英

需要使用Windows批處理腳本根據到達時間處理文件

[英]need to process files based on arrival time using windows batch script

我每天收到5到6個文件。 文件名的格式為XXXXX_DDMM_YYYYMMDDHHMISS.csv

例子:

  • 2016年10月17日下午03:12:32生成的文件名為XXXXX_17OCT_20161017151232.csv

  • 2016年10月16日下午03:04:23生成的文件名為XXXXX_16OCT_20161016150423.csv

  • 2016年10月18日下午02:34:56生成的文件名為XXXXX_18OCT_20161018143456.csv

我需要將所有文件移動到名為TEST1的文件夾中,然后從那里找到第一個具有最舊時間戳記的文件,進行處理,然后從該文件夾中刪除該文件。

接下來需要選擇第二個最早的時間戳,並對所有文件重復該過程。

請你幫助我好嗎?

經典方法是

for /f "delims=" %%a in ('dir /b /a-d /od "test1\*.csv"') do echo %%a

這將echo匹配掩模文件名test1\\*.csv/od順序過期。

這應該做您想要的事情(好吧,依次選擇文件-處理是您的事...),但是如果您真的想根據文件名處理文件,那么X*是未知的(但長度恆定(為5) )) 然后

for /f "delims=" %%a in ('dir /b /a-d "test1\*.csv"^|sort /+11 ') do echo %%a

應該可以工作-從第11列開始對原始文件名列表進行排序。

當且僅當XXXXX的長度恆定時, Magoo的第二種解決方案才有效。 但是,如果它可以變化,那么SORT不會對您有任何好處。

我已經編寫了JSORT.BAT來處理超出本機SORT命令功能的復雜排序方案。 它是純腳本(混合批處理/ JScript),可從XP開始在任何Windows計算機上本地運行-無需第三方exe文件。

使用jsort /? 從命令提示符獲取幫助。

在此解決方案中,我根據文件名中最后一個_之后出現的文本進行排序。 因此,即使XXXXX中包含_ ,該解決方案也能正常工作。

pushd "\test1"
for /f "eol=: delims=" %%F in (
  'dir /b /a-d "test1\*.csv"^|jsort /d _ /t -1'
) do (
  REM process the %%F file
  del "%%F"
)
popd

暫無
暫無

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

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