3

私のディレクトリにこれらのファイルが含まれているとします

dir C:\data\
Statistics_A-1-1_2012-10-21 00_10_19.csv
Statistics_B-1-1_2012-10-21 00_12_01.csv

今日の日付を取得し、その日付を含むすべてのファイルを取得するスクリプトをバッチで作成するにはどうすればよいですか。ファイルにタグA-1-1またはタグB-1-1がない場合は、そのタグの不足しているファイルに対してエラーが出力されます。理想的には、スクリプトの引数として日付範囲を指定したいと思います。指定しない場合、デフォルトで今日の日付になります

私はbashに慣れており、Windowsプログラミングは初めてです。また、perl、pythonなどのスクリプト言語も利用できません。助けていただければ幸いです。乾杯。

4

2 に答える 2

3

日付部分を取得する最も簡単な方法は、WMICを使用することです(ここでファイルを使用して何をしたいのかについては言及していませんが、ここにリストされているだけです)。

編集されたバージョン:

   @echo off
    FOR /F "skip=1 eol=D tokens=1,2,3 delims= " %%A IN ('WMIC Path Win32_LocalTime Get Year^,Month^,Day /Format:table') DO (
            SET TODAY=%%A-%%B-%%C
            setlocal ENABLEDELAYEDEXPANSION
            if [!TODAY!] NEQ [--] (
                goto :(endOfLoop^)
            )
            endlocal

    )
    :(endOfLoop^)
    echo %TODAY%

        DIR /B "Statistics_A-1-1_%TODAY% *.csv"
        DIR /B "Statistics_B-1-1_%TODAY% *.csv"
于 2012-11-06T08:03:46.423 に答える
3
@echo off
for /F "tokens=1-3 delims=/" %%a in ("%date%") do set today=%%c-%%a-%%b
for %%a in (*%today%*.csv) do (
   for /F "tokens=2 delims=_ " %%b in ("%%a") do (
      if %%b equ %today% (
         echo %%a       ERROR: Missing tab
      ) else (
         echo %%a
      )
   )
)

ユリウス日番号を使用して、さまざまな日付を次のように処理できます。

set startJDN=Julian Day Number of start of range
set endJDN=Julian Day Number of end of range
for %%a in (*%today%*.csv) do (
   set fileJDN=Julian Day Number of file %%a
   if !fileJDN! geq %startJDN% if !fileJDN! leq %endJDN% (
      echo The file is in range, process it...
   )
)

この投稿を参照してください:ファイルを移動するためのBatファイル

于 2012-11-06T21:28:33.657 に答える