setlocal enabledelayedexpansion
@echo off
cls
rem 変数を定義
SET EJOB=
rem ********************************************
rem * WinMerge FileCompare Report Batch
rem * WMREPOマン
rem * 作成日 2023.07.13 作成者:Sakaru.Manda(VMREPOマン)
rem * All Rights Reserved 2023.07.13- VMREPOマン
rem * 注意事項:「再配布、変更不可、利用許可要」
rem ********************************************
echo;
SET NEWPATH=%CD%\NEW
SET GENPATH=%CD%\GEN
SET REPPATH=%CD%
SET TXTTYPE=.txt
SET REPTYPE=.html
SET Member=test1
SET CMD="C:\Program Files\WinMerge\WinMergeU.exe"
SET IniFile=%CD%\list.txt
rem ********************************************
rem * 前提条件の確認
rem ********************************************
cscript /nologo bin\Check.vbs %IniFile% %%GENPATH% %%NEWPATH%
echo 戻り値: %ERRORLEVEL%
If %ERRORLEVEL% equ 9 (
echo チェックエラー
pause
exit
)
CALL :INIT !%IniFile!
CALL :IsGENFdrExist !%IniFile!
CALL :IsNEWFdrExist !%IniFile!
echo =====================================
echo [WinMerge File Compare Report]
echo All Rights Reserved 2023- VMREPOマン
echo :
echo カレント:%CD%
echo 実行:%~0
echo 使用日時:%DATE% %TIME%
echo 利用者 :%USERNAME%
echo (現):%GENPATH%
echo (新):%NEWPATH%
echo 結果ファイル:%REPPATH%
echo 注意(結果ファイル作成後は、加工処理要)
echo =====================================
SET /P ANSWER="実行します?(Y/N)"
if /i {%ANSWER%}=={y} (goto :yes)
if /i {%ANSWER%}=={yes} (goto :yes)
EXIT
:yes
@echo off
set /a n=0
ECHO ***** %DATE% %TIME% 処理開始 %n% 件 ****'
FOR /F %%a IN (list.txt) DO (
SET Member=%%a
SET NewFile=%NEWPATH%\!Member!%TXTTYPE%
SET GenFile=%GENPATH%\!Member!%TXTTYPE%
SET RepFile=%REPPATH%\!Member!%REPTYPE%
%CMD% !NewFile! !GenFile! /minimize /noninteractive /u /or !RepFile!
echo !ERRORLEVEL!
SET /a n=n+1
)
ECHO .
ECHO ***** %DATE% %TIME% 処理終了 %n% 件 ****'
ECHO .
pause
EXIT /b 0
rem --------------------------------------------
rem * 初期処理
rem --------------------------------------------
:INIT
IF NOT EXIST %GENPATH% (
echo %GENPATH% フォルダなし
pause
EXIT
)
IF NOT EXIST %NEWPATH% (
echo %NEWPATH% フォルダなし
pause
EXIT
)
IF NOT EXIST %IniFile% (
echo %IniFile% ファイルなし
pause
EXIT
)
EXIT /b
rem --------------------------------------------
rem * 現FDRにファイルが存在するかチェック
rem --------------------------------------------
:IsGENFdrExist
FOR /F %%a IN (list.txt) DO (
SET FileNm=%%a
IF NOT EXIST %GENPATH%\!FileNm!.txt (
echo フォルダ %GENPATH%\!FileNm!.txt なし
pause
goto:GENERR
)
)
:GENERR
EXIT /b
rem --------------------------------------------
rem * 新FDRにファイルが存在するかチェック
rem --------------------------------------------
:IsNEWFdrExist
FOR /F %%a IN (list.txt) DO (
SET FileNm=%%a
IF NOT EXIST %NEWPATH%\!FileNm!.txt (
echo フォルダ %NEWPATH%\!FileNm!.txt なし
pause
goto:NEWERR
)
)
:NEWERR
EXIT /b
endlocal
Option Explicit
'----------------------------------------------------
' Main
'----------------------------------------------------
Dim Args, sArg1, sArg2, sArg3
Dim iCnt
Dim sPathIn
Dim sBasePath
Set Args = WScript.Arguments
If Args.Count < 1 Then
WScript.Echo "ドラッグ&ドロップしてを実行。"
WScript.Quit
End If
sArg1 = Wscript.Arguments(0)
sArg2 = Wscript.Arguments(1)
sArg3 = Wscript.Arguments(2)
'***************************************************
'WScript.Echo Args.Count
'WScript.Echo sArg1
'***************************************************
Dim iICnt, iOKCnt, iNGCnt
Dim bRC
bRC = IsFileExits(sArg1,sArg2)
WScript.Echo ""
If bRC <> 1 Then
WScript.Echo "異常"
WScript.Quit (9)
End If
bRC = IsFileExits(sArg1,sArg3)
WScript.Echo ""
If bRC <> 1 Then
WScript.Echo "異常"
WScript.Quit (9)
End If
WScript.Quit (0)
'----------------------------------------------------
' ファイルの存在確認
'----------------------------------------------------
Function IsFileExits(sPathIn,sTgtFdr)
Const ForReading = 1, ForWriting = 2, ForAppending = 3
Dim fs, fr
Dim sIRec
Dim sIFile, s
Dim iIPos, iFPos, intSts, i
Dim iOCnt
IsFileExits = 0
'---------------------------------------
WScript.Echo "sPathIn :" & sPathIn
WScript.Echo "sTgtFdr :" & sTgtFdr
WScript.Echo ""
'---------------------------------------
Set fs = CreateObject("Scripting.FileSystemObject")
' *****************************************************************
' 検索先1
If Not (fs.FolderExists(sTgtFdr)) Then
EXIT FUNCTION
End If
' 入力テキストファイルの内容のファイルが存在するか確認する
If fs.FileExists(sPathIn) Then
Set fr = fs.OpenTextFile(sPathIn, ForReading)
iICnt = 0:iOKCnt = 0:iNGCnt = 0
Do While Not fr.AtEndOfStream
sIRec = fr.ReadLine
If fs.FileExists(sTgtFdr & "\" & Trim(sIRec) & ".txt") Then
iOKCnt = iOKCnt + 1
Else
iNGCnt = iNGCnt + 1
End If
iICnt = iICnt + 1
Loop
WScript.Echo sTgtFdr & "行数入力:" & iICnt& " OK:" & iOKCnt & " NG:" & iNGCnt
fr.Close
Set fr = Nothing
Else
'Call MsgBox("入力テキストファイルが存在しない!", 48, "エラー")
IsFileExits = 0
End If
Set fs = Nothing
If iICnt = iOKCnt Then
IsFileExits = 1
End If
End Function