2023年7月31日月曜日

AA

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