@echo offREM ## ローカル変数開始 遅延環境変数
setlocal ENABLEDELAYEDEXPANSION
REM ==============================
REM ## 変数定義
REM ==============================
set COUNT=0
set MenuLINE=0
set SkipLINE=0
set Get_IP=
set RDP_User=
set RDP_Password=
set TERATERM_User=
set TERATERM_Password=
REM ## TTLファイル格納,INIファイル格納
set CURRENT_DIR=%CD%
set TTL_File=%CURRENT_DIR%\ServerLOGIN.ttl
set INI_File=%CURRENT_DIR%\TERATERM_2.INI
REM ## CSVファイル格納
set TargetFILE_01=%CURRENT_DIR%\RemoteDesktop.csv
set TargetFILE_02=%CURRENT_DIR%\SSHconnection.csv
REM ## TeraTermマクロのEXEファイル格納
cd /d C:\Program Files (x86)\teraterm
REM ## cd /d D:\Program Files (x86)\teraterm
REM ## cd /d E:\Program Files (x86)\teraterm
set Change_DIR=%CD%
set Macro_EXE=%Change_DIR%\ttpmacro.exe
REM ## カレントに戻る
cd /d %CURRENT_DIR%
REM ## 一時的に実行ファイルのパス追加
REM ## set path=%path%;%Macro_EXE%
color 17
REM ## パラメータ表示
echo -----------------------------
echo CURRENT : %CURRENT_DIR% --- CURRENT Path
echo TTL File : %TTL_File% --- TTL File
echo INI File : %INI_File% --- NII File
echo CSV File : %TargetFILE_01% --- RDP csv
echo CSV File : %TargetFILE_02% --- SSH csv
echo TeraTerm : %Change_DIR% --- TeraTerm Path
echo EXE File : %Macro_EXE% --- EXE File
echo -----------------------------
Timeout 1
REM ## pause
REM ★★★★★★★★★★★★★★★
REM ## メニュー表示
:MENU_START
cls
color 0f
REM ## 変数リセット
set COUNT=0
set SkipLINE=0
echo *****************************
echo 【メニュー】
echo *****************************
echo * MENU
echo *
echo * 1: リモートデスクトップ 接続
echo * 2: Tera Term 接続
echo *
echo * 99: 終了
echo *
echo *****************************
set USR_INPUT_STR=
set /P USR_INPUT_STR="番号を入力してください: "
if ""%USR_INPUT_STR%""=="""" GOTO MENU_START
if %USR_INPUT_STR%==1 (goto MENU_START_01)
if %USR_INPUT_STR%==2 (goto MENU_START_02)
if %USR_INPUT_STR%==99 (goto MENU_END)
goto MENU_ERROR
REM ★★★★★★★★★★★★★★★
REM ## リモートデスクトップ接続
:MENU_START_01
cls
color f0
echo *****************************
echo 【リモートデスクトップ接続先】
echo *****************************
echo * RDP MENU
echo *
REM ───────────────
REM ## CSVファイル読み込み
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_01%) do (
REM ## 行数
set /a COUNT=!COUNT!+1
REM ## RDP用メニュー表示
echo * !COUNT! : %%a 【ホスト名:%%b】 %%c 【ユーザ名:%%e】
)
REM ## メニュー行数セット
set /a MenuLINE=%COUNT%
REM ## 変数リセット
set COUNT=0
REM ───────────────
echo * 0 : メニューに戻る
echo * 99 : 終了
echo *
echo *****************************
set USR_INPUT_STR=
set /P USR_INPUT_STR="番号を入力してください: "
if ""%USR_INPUT_STR%""=="""" GOTO MENU_START_01
if %USR_INPUT_STR%==0 (goto MENU_START)
if %USR_INPUT_STR%==99 (goto MENU_END)
REM ## メニューに無い数はエラー
if %USR_INPUT_STR% gtr %MenuLINE% (goto MENU_ERROR)
REM ───────────────
REM ## CSVファイル読み込み⇒対象抽出⇒関数処理
REM ## 入力値を変数にセット
set SkipLINE=%USR_INPUT_STR%
if %SkipLINE%==1 (
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_01%) do (
set /a COUNT=!COUNT!+1
set Get_IP=%%a
set RDP_User=%%e
set RDP_Password=%%i
REM ## ループ終了
goto forSkip1
)
) else ( set /a SkipLINE=%SkipLINE%-1 )
)
REM ## echo %SkipLINE% LINE --- SKIP
REM ## 指定行数までスキップして読み込む
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=, skip=%SkipLINE%" %%a in (%TargetFILE_01%) do (
set /a COUNT=!COUNT!+1
set Get_IP=%%a
set RDP_User=%%e
set RDP_Password=%%i
REM ## ループ終了
goto forSkip1
)
REM ───────────────
REM ## 関数呼び出し
:forSkip1
echo --- %USR_INPUT_STR% --- %Get_IP% %RDP_User%
pause
if not %COUNT%==0 (call :RDP %Get_IP% %RDP_User% %RDP_Password%)
REM ## 戻り値判定
if %errorlevel%==1 (goto MENU_START)
REM ───────────────
goto MENU_ERROR
REM ★★★★★★★★★★★★★★★
REM ## テラターム接続
:MENU_START_02
cls
color 0e
echo *****************************
echo 【TeraTerm接続先】
echo *****************************
echo * TERATERM MENU
echo *
REM ───────────────
REM ## CSVファイル読み込み
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_02%) do (
REM ## 行数
set /a COUNT=!COUNT!+1
REM ## TeraTerm用メニュー表示
echo * !COUNT! : %%a 【ホスト名:%%b】 %%c 【ユーザ名:%%e】
)
REM ## メニュー行数セット
set /a MenuLINE=%COUNT%
REM ## 変数リセット
set COUNT=0
REM ───────────────
echo * 0 : メニューに戻る
echo * 99 : 終了
echo *
echo *****************************
set USR_INPUT_STR=
set /P USR_INPUT_STR="番号を入力してください: "
if ""%USR_INPUT_STR%""=="""" GOTO MENU_START_02
if %USR_INPUT_STR%==0 (goto MENU_START)
if %USR_INPUT_STR%==99 (goto MENU_END)
REM ## メニューに無い数はエラー
if %USR_INPUT_STR% gtr %MenuLINE% (goto MENU_ERROR)
REM ───────────────
REM ## CSVファイル読み込み⇒対象抽出⇒関数処理
REM ## 入力値を変数にセット
set SkipLINE=%USR_INPUT_STR%
if %SkipLINE%==1 (
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_02%) do (
set /a COUNT=!COUNT!+1
set Get_IP=%%a
set TERATERM_User=%%e
set TERATERM_Password=%%i
REM ## ループ終了
goto forSkip2
)
) else ( set /a SkipLINE=%SkipLINE%-1 )
)
REM ## echo %SkipLINE% LINE --- SKIP
REM ## 指定行数までスキップして読み込む
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=, skip=%SkipLINE%" %%a in (%TargetFILE_02%) do (
set /a COUNT=!COUNT!+1
set Get_IP=%%a
set TERATERM_User=%%e
set TERATERM_Password=%%i
REM ## ループ終了
goto forSkip2
)
REM ───────────────
REM ## 関数呼び出し
:forSkip2
echo --- %USR_INPUT_STR% --- %Get_IP% %TERATERM_User%
pause
if not %COUNT%==0 (call :TERATERM %Get_IP% %TERATERM_User% %TERATERM_Password%)
REM ## 戻り値判定
if %errorlevel%==1 (goto MENU_START)
REM ───────────────
goto MENU_ERROR
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 関数 RDP
:RDP
cls
color 8f
set xRDPxIP=%1
set xRDPxUSER=%2
set PS_Args=%3
echo 【ログイン先IPアドレス:%xRDPxIP%】【ユーザ名:%xRDPxUSER%】
echo 【対象ファイル:%PS_Args%】
REM ───────────────
REM ## パスワードを複合化して抽出する
FOR /F "usebackq" %%p IN (`powershell -executionpolicy bypass -File PW_File.ps1 %PS_Args%`) DO SET PS_VALUE=%%p
set xRDPxPASSWORD=%PS_VALUE%
REM ───────────────
REM ## RDPコマンド実行
Cmdkey /generic:TERMSRV/%xRDPxIP% /user:%xRDPxUSER% /pass:%xRDPxPASSWORD%
Start mstsc /v:%xRDPxIP%
Timeout 5
Cmdkey /delete:TERMSRV/%xRDPxIP%
REM ───────────────
REM ## 変数初期化、戻り値1をセットして戻る
set xRDPxIP=
set xRDPxUSER=
set PS_Args=
set PS_VALUE=
set xRDPxPASSWORD=
exit /b 1
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 関数 TERATERM
:TERATERM
cls
color 0f
set xLOGINxIP=%1
set xLOGINxUSER=%2
set PS_Args=%3
echo 【ログイン先IPアドレス:%xLOGINxIP%】【ユーザ名:%xLOGINxUSER%】
echo 【対象ファイル:%PS_Args%】
REM ───────────────
REM ## パスワードを複合化して抽出する
FOR /F "usebackq" %%p IN (`powershell -executionpolicy bypass -File PW_File.ps1 %PS_Args%`) DO SET PS_VALUE=%%p
set xLOGINxPASSWORD=%PS_VALUE%
REM ───────────────
REM ## TERATERM接続マクロ実行
cd /d %Change_DIR%
ttpmacro.exe %TTL_File% %xLOGINxIP% %xLOGINxUSER% %xLOGINxPASSWORD% %INI_File%
REM ───────────────
REM ## 変数初期化、戻り値1をセットして戻る
set xLOGINxIP=
set xLOGINxUSER
set PS_Args=
set PS_VALUE=
set xLOGINxPASSWORD=
exit /b 1
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## エラー処理
:MENU_ERROR
cls
color 0c
echo *****************************
echo 入力エラー(メニューに戻ります)
echo *****************************
Timeout 2
goto MENU_START
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 終了処理
:MENU_END
cls
color 0a
echo *****************************
echo 【 終 了 】
echo *****************************
REM ## ローカル変数終了
endlocal
Timeout 2
exit
PR