2015年5月24日日曜日

日次更新ファイルの 本日の更新を確認する バッチ

:: +------------------------------------------------------------------
:: |名前固定で、日時更新されるファイルに対して
:: |本日の更新が行われているか、チェックするバッチプログラム。
:: |
:: |実際の運用では、スケジューラに このバッチを登録して
:: |定刻起動させることで、運用する
:: |
:: |本日の更新が行われていた場合、
:: |データ解析用のエクセルファイルを開くかどうか、入力待ちにする
:: |
:: |本日の更新が無い(更新日付とPC日付が一致しない)場合、
:: |一定の時間(ここは5秒)をおいて、ウインドウを自動クローズする
:: |※データ解析用のエクセルファイルを開かない場合もこの処理となる
:: +------------------------------------------------------------------
@echo off

dir /T:W "\\aaaa\bbbb\cccc\DailyUpdate.dat" | findstr /B %DATE% > NUL

if %ERRORLEVEL%==0  (
        color 0E
        echo 日次データが本日日付で更新されています
        echo 以下が、その内容です
        echo.
        echo ■ここから■↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
        type "\\aaaa\bbbb\cccc\DailyUpdate.dat"
        echo ■ここまで■↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
)  ELSE (
        color 0F
        echo まだ、更新なしです
        goto OWARI
)


echo.
echo 更新されたデータが0件でなければ
echo 解析用のエクセルファイルに、データインポートする必要があります。
echo エクセルファイルを開きますか?
echo.


set  workKeyInputString=
set  /P workKeyInputString="はい→y[Enter] / いいえ→n[Enter] :>"

if %workKeyInputString%==y (
        goto OPEN
)
if %workKeyInputString%==Y (
        goto OPEN
)
goto OWARI


:OPEN
cmd  /C "dataImportExcelFile.lnk"
:: ↑ここでは、バッチと同じディレクトリにある
:: ショートカット(解析用エクセルファイルの)を開いている…が
:: startコマンドで直接、解析用エクセルファイルを開くこともできるので
:: それは、別記事を参照のこと


:OWARI
echo 5秒後に、このウインドウを閉じます
ping localhost -n 5 > NUL


echo on
:: -eod-

2015年5月9日土曜日

複数のエクセルファイル から 条件に合ったもの を 開く バッチ_02

◆前回記事に、ファイル0件時の処理を追加しました。

特定ディレクトリにある 一個以上のエクセルファイルから 更新日付が最新のものを開くための バッチプログラム

仕様
ターゲットディレクトリは、バッチファイル内に直書きする
更新日付が最新のエクセルファイルを開く…としているが、DIRコマンドのオプションで変更可能

↓↓↓ここから↓↓↓↓↓↓↓
@echo off
:: -------------------------------------------------------------------
:: エクセルファイルのオープン
:: -------------------------------------------------------------------

:: ローカルPCのエクセルパスを設定する
set      work_ExcelProgramPath=C:\Program Files\Microsoft Office\………\EXCEL.EXE

:: ターゲットディレクトリを設定する
set      work_FolderPath=\\………\………\………\

:: ターゲットディレクトリにあるエクセルファイル名(一個以上)を取得する。ソート順は更新日付の直近順
:: ソート結果はテキストファイルに書き出す
dir  /b  /o-d  "%work_FolderPath%"*.xls  >  tempExcelFileNameList.txt

if NOT %ERRORLEVEL%==0 goto FILE_NOT_EXIST


:: 取得したエクセルファイル名(一個以上)から
:: 更新日付が最も新しいエクセルファイル名のみ設定する。
:: ※この場合、複数行のエクセルファイル名が SETコマンドにリダイレクトされる可能性があるが
::   SETコマンドは、改行コードを検出した時点で文字列の取り込みを中止するので、問題は起きない
set  /p  work_FileNameToOpen=  <  tempExcelFileNameList.txt


:: 絶対パスを作成して、設定する
set      work_FullPathOfFile=%work_FolderPath%%work_FileNameToOpen%

:: startコマンドの第一引数は、ウインドウタイトルと見なされるので、ダミーを設定しておく
start  ""  "%work_ExcelProgramPath%"  "%work_FullPathOfFile%"

goto OWARI

:: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
:FILE_NOT_EXIST

color 0E
echo エクセルファイルが(作業のため?)一時的に移動されているようです
echo しばらくして、該当フォルダの中を確認してみてください
echo :
echo :
echo :
echo この画面を閉じますから、何かキーをおしてください
pause > NUL

:: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
:OWARI

echo on

↑↑↑ここまで↑↑↑↑↑↑↑

2015年5月5日火曜日

複数のエクセルファイル から 条件に合ったもの を 開く バッチ

特定ディレクトリにある 一個以上のエクセルファイルから 更新日付が最新のものを開くための バッチプログラム

仕様
ターゲットディレクトリは、バッチファイル内に直書きする
更新日付が最新のエクセルファイルを開く…としているが、DIRコマンドのオプションで変更可能

↓↓↓ここから↓↓↓↓↓↓↓
:: -------------------------------------------------------------------
:: エクセルファイルのオープン
:: -------------------------------------------------------------------

:: ローカルPCのエクセルパスを設定する
set      work_ExcelProgramPath=C:\Program Files\Microsoft Office\………\EXCEL.EXE

:: ターゲットディレクトリを設定する
set      work_FolderPath=\\………\………\………\

:: ターゲットディレクトリにあるエクセルファイル名(一個以上)を取得する。
:: ソート順は更新日付の直近順
:: ソート結果はテキストファイルに書き出す
dir  /b  /o-d  "%work_FolderPath%"*.xls  >  tempExcelFileNameList.txt

:: ↑にて、エクセルファイルが0個の場合が有りえるならば、
:: このタイミングで ERRORLEVEL を調べて、 0 でなければ、相応の処理を行うこと


:: 取得したエクセルファイル名(一個以上)から
:: 更新日付が最も新しいエクセルファイル名のみ設定する。
:: ※この場合、複数行のエクセルファイル名が SETコマンドにリダイレクトされる可能性があるが
::   SETコマンドは、改行コードを検出した時点で文字列の取り込みを中止するので
::   問題は起きない
set  /p  work_FileNameToOpen=  <  tempExcelFileNameList.txt


:: 絶対パスを作成して、設定する
set      work_FullPathOfFile=%work_FolderPath%%work_FileNameToOpen%


:: startコマンドの第一引数は、ウインドウタイトルと見なされるので、ダミーを設定しておく
start  ""  "%work_ExcelProgramPath%"  "%work_FullPathOfFile%"

↑↑↑ここまで↑↑↑↑↑↑↑