2014-02-06 20 views
0

我們有Windows日誌一些的Apache Tomcat的Windows文件名 - 例如..批處理文件壓縮的​​Apache Tomcat對於不等於今天

server.log.2014-02-04-10 
server.log.2014-02-04-11 
server.log.2014-02-04-12 
server.log.2014-02-05-13 
server.log.2014-02-05-14 
server.log.2014-02-05-15 

這些都與文件擴展名的定義。 YYYY-MM-DD-HH,默認情況下,Apache有日期:.YYYY-MM-DD,但是,由於系統使用和其他原因,我們必須定義HH轉折。 我試圖做一些很簡單.. 如果今天不相等文件擴展名呢,存檔(ZIP)它..

這裏是我有什麼,也不管我做什麼,它顯示: 2014-02-05即使腳本顯示.2014-02-04。

這裏是腳本,我不知道如果我需要SETLOCAL enabledelayexpansion ..

rem http://www.dostips.com/DtTipsStringManipulation.php#Snippets.Replace 
SETLOCAL enabledelayedexpansion 
for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined MyDate set MyDate=%%x 
set today=!MyDate:~0,4!-!MyDate:~4,2!-!MyDate:~6,2! 
rem today=%MyDate:~0,8% 
for %%i in (D:\11\*.*) do (
SET FILETIME=%%~xi 
rem SET Dt=!FILETIME:~0,11! 
rem IF NOT "!fldt!" == ".!today!" (
rem echo %%~ni%%~xi 
rem) 
) 
pause 

感謝

回答

1

這通過在名稱日期字符串過濾文件名和
將回顯文件名那些沒有今天的日期。

@echo off 
rem http://www.dostips.com/DtTipsStringManipulation.php#Snippets.Replace 
SETLOCAL enabledelayedexpansion 
for /f %%x in ('wmic os get localdatetime ^|find "." ') do set "MyDate=%%x" 
set "today=!MyDate:~0,4!-!MyDate:~4,2!-!MyDate:~6,2!" 
rem set "today=%MyDate:~0,8%" 
for /f "delims=" %%a in ('dir "D:\11\*.*" /b ^|find /v ".%today%-" ') do (
    echo "%%~fa" 
) 
pause 
+0

非常感謝您的協助。我做了一些改變,以使用findstr而不是find。現在,我只需要提取壓縮文件的日期(但是,這是一個不同的主題)。 :) – Leptonator

+0

'findstr'使用正則表達式,並在上面的情況下可以匹配一些意想不到的東西。 'find'完全適合上述用途。要以相同的方式使用findstr,您必須添加/ L開關。 – foxidrive

+0

我想通了我的問題..我運行腳本的文件夾有Cygwin工具的副本。我使用的發現是從Cygwin而不是本機Windows。衛生署!另外,我還有UnxUtils噴灑在那裏。 – Leptonator

相關問題