0

私はWindowsXPを使用しています。コードは、バッチファイルまたはVBscriptで使用できます。プログラムを実行するためにWindowsスケジューラを使用するつもりです。

テキストファイルから日付を読み取るためのコードが必要です(テキストファイルの唯一の行であるか、ファイル名に日付を含めることができます。ファイルを生成するプロセスを制御します)次に、コードでテキストファイルを評価する必要があります。現在の日付に対する日付。テキストファイルの日付が前月のものであることを確認します。

月次データが更新されたら、月初のジョブを実行できるようにするプロセスの構築を開始しています。バッチ/スクリプトファイルを使用してこの種のプロセスを構築するのは初めてです。

御時間ありがとうございます

4

3 に答える 3

1

Windowsの日付コマンドは非常に制限されています、あなたはrealdateを試すことができます

realdate.com /f="DD" /s="set DAY=" >tmpdt.bat

call tmpdt.bat
if !%DAY%! == !%01%! (
echo not first day
exit 0
)
do your stuff here
于 2012-09-12T03:34:30.407 に答える
1

で日付を処理するbatchことは不可能ではありませんが、本当に、本当に醜いです。これに使用することをお勧めしVBScriptます(またはPowerShellそれがオプションの場合)。

Set fso = CreateObject("Scripting.FileSystemObject")
Set f   = fso.GetFile("C:\PATH\TO\your_file_2012-07-23.txt")

fileDate  = CDate(Right(fso.GetBaseName(f.Name), 10))

If Month(DateAdd("m", 1, fileDate)) = Month(Now) Then
  WScript.Echo f.Name & " is from the previous month."
End If
于 2012-09-12T10:35:28.650 に答える
0

このコードの利点は、現在の日付をdate.txt次のように入力できることです。

echo %date%>date.txt

次に、その日付に基づいて行動するには、次の行に続くコードのみが必要です。

set lastmonth=

コードは次のとおりです。

@echo off
:Beginagain
set lastmonth= %date:~4,2%
set /a lastmonth=%lastmonth: 0=%-1
echo.
set /p lastmonth=Enter month for date.txt [1-12, Default = %lastmonth%, Q = Quit]: 
if %lastmonth%==Q goto :eof
if %lastmonth%==q goto :eof
set year=%date:~-4%
if %lastmonth% leq 0 (
  set lastmonth=12
  set /a year=year-1
)
if %lastmonth% lss 10 set lastmonth=0%lastmonth%
echo %date:~,4%%lastmonth%/%date:~7,2%/%year% > date.txt
set year=
set lastmonth=
set /p olddate=<date.txt
set olddate= %olddate:~4,2%
set olddate=%olddate: 0=%
set thismonth= %date:~4,2%
set thismonth=%thismonth: 0=%
set /a diff=thismonth-olddate
if %diff% lss 0 (
  echo Date from Last Year
) else if %diff%==0 (
  echo Date from this month
) else if %diff%==1 (
  echo Date from last month
) else if %diff% gtr 1 (
  echo Date from before last month
)
goto :Beginagain

上記のコードを使用すると、[Q] uitを選択するまでループすることで、さまざまな月を試すことができます。

デフォルトオプションを使用すると、常に次のように出力されます。

Date from last month

9月中に実行すると、上記のコードは次のように表示されます。

Enter month for date.txt [1-12, Default = 8, Q = Quit]:

1から12までの任意の月(前年のように機能する上または下の任意の数字)を入力できる場合はENTER、デフォルトの月を押すか、入力QENTERしてプログラムを終了します。

デフォルトの月は、常に現在の月の1か月前になります。したがって、現在の月が1月の場合、デフォルトは12になります。現在の月が12月の場合、デフォルトは11になります。

于 2012-09-15T18:09:58.967 に答える