2

テキスト ファイルから最も近い日付をエコー出力するバッチ ファイルを作成するにはどうすればよいですか?

たとえば、test2.txt という名前のテスト ファイルの場合、text2.text には次のように表示されます。

11.12.2013 historie (kapittel1, kapittel 2 og kapittel 3).
21.12.2013 matte (kapittelq1, kapittel 2 og kapiwettel 3).
01.12.2013 naturfag (kapittel1q, kapittel 2 og kapiwettel 3).
16.12.2013 example (kapittelq1, kapittel 2 og kapittelwe 3).
12.10.2013 example 2(kapittel1w, kapittel 2 og kapittweel 3).

次に、ファイルを分析した後にエコーアウトし、次のように(現在の日付から)最も近い日付をエコーアウトします。

The Next test is X days (12.10.2013) and the subject is (example2, and the topics is (kapittel1w, kapittel 2 og kapittweel 3).
this means it is: X hours, X minutes, X secounds *( countdown) *

"

どうすればいいですか?

4

2 に答える 2

0

と :

11.12.2013 historie (kapittel1, kapittel 2 og kapittel 3).
21.12.2013 matte (kapittelq1, kapittel 2 og kapiwettel 3).
01.12.2013 naturfag (kapittel1q, kapittel 2 og kapiwettel 3).
16.12.2013 example (kapittelq1, kapittel 2 og kapittelwe 3).
12.10.2013 example 2(kapittel1w, kapittel 2 og kapittweel 3).

結果は20131012

@echo off &setlocal EnableDelayedExpansion

set "file_path=.\test2testtesttest.TXT"

if not exist "!file_path!" echo File "!file_path!" Does Not Exist >&2 & exit /b 2
for /f %%F in ("!file_path!") do  set file_path=%%~sfF


copy nul "%TEMP%\~.ddf" >nul

:: date function provided by carlos
:: http://www.dostips.com/forum/viewtopic.php?f=3&t=4555&start=15
makecab /D RptFileName="%TEMP%\~.rpt" /D InfFileName="%TEMP%\~.inf" -f "%TEMP%\~.ddf">nul
for /f "tokens=3-7" %%a in ('type "%TEMP%\~.rpt"') do (
   if not defined current-date set "current-date=%%e-%%b-%%c"
   if not defined current-time set "current-time=%%d"
   if not defined weekday set "weekday=%%a"
)
del /q "%TEMP%\~.*"
rem echo %weekday% %current-date% %current-time%
set Jan=01
set Feb=02
set Mar=03
set Apr=04
set May=05
set Jun=06
set Jul=07
set Aug=08
set Sep=09
Set Oct=10
set Nov=11
set Dec=12

for /F "tokens=1,2,3 delims=-" %%A in ("%current-date%") do (
    set comparable_date=%%A!%%B!%%C
)
rem echo %comparable_date%
set /a nearest_date=99999999
for /F "tokens=1,2,3 delims=. " %%A in (%file_path%) do (

    set /a possible_nearest_date=%%C%%B%%A

    set /a old_result=!nearest_date!-comparable_date
    set /a new_result=!possible_nearest_date!-comparable_date

    if !new_result! LSS !old_result! set /a nearest_date=!possible_nearest_date!
)
if !nearest_date! EQU 99999999 echo something wrong with the file>&2 && endlocal && exit /b 3

set nearest_date=!nearest_date:~-2!.!nearest_date:~4,2!.!nearest_date:~0,4!

echo(
echo(
rem type %file_path%
for /f "tokens=1,2* delims=()" %%L in ('type %file_path%^|find "!nearest_date!"') do ( 

    for /f "tokens=1,2" %%t in  ("%%L") do (
        echo The Next Test is on (!nearest_date!^) and subject is ( %%u   with topics   %%M^)
    )   
)
echo(
echo(
endlocal
于 2013-09-11T09:43:18.297 に答える