./test.bat aaa
powershell -NoLogo -ExecutionPolicy RemoteSigned -Command .\test.ps1 %1
# 中間テキストファイル指定
[System.String]$textLog = './test.txt'
# 検索文字列指定
[System.String]$findstring = 'abc'
do {
	$loopflag = $False    #ループ初期化(無効)
	#$Args[0] = 引数[1]
	#command $Args[0] $Args[1]
	$Output = $Args[0]	#test command
	#中間テキストファイル出力
	#command             | tee-object -file test.txt
	Write-Output $Output | tee-object -file test.txt
	#文字列があるか検索
	$textChk = @(Get-Content $textLog -TotalCount 2)[-1] | Select-String -SimpleMatch $findstring -quiet
	
	#結果がTrueであれば再度実行
	if ($textChk -eq $True) {
	    $loopflag = $True    #ループ有効
	}
	#中間テキストファイル削除
	#Remove-Item './test.txt'
} while ($loopflag)
バッチだけに作り直し
@echo off
@rem テキストファイル名指定
set txtFile=.\batlog.txt
set findString=aiue
@rem cygwinのteeコマンドを利用
@rem [command] [引数(%1)] 2>&1 | C:\cygwin64\bin\tee.exe %txtFile%
echo %1 2>&1 | C:\cygwin64\bin\tee.exe %txtFile%
:loop
	findstr %findString% %txtFile% > NUL
	if "%ERRORLEVEL%"=="0" (
		@rem 文字列があればループ終了
	 	echo "検索あり"
		goto :end
	) else if "%ERRORLEVEL%"=="1" (
		@rem 文字列がなければ再実行
	  	echo "検索なし"
	  	goto :loop
	)
:end
@rem テキストファイル削除
rm -f txtFile
VBAでバッチ実行
Sub RunBatWshShell()
    Dim obj As WshShell
    Dim fPath
    Dim sPath
    Dim sParam1
    Dim sParam2
    Dim tName
    Dim tPathName
    Dim sCheck
    Dim fLoop
    Dim buf
    
    Set obj = New WshShell
    
    'loop確認文字列
    sCheck = "abc"
    
    '引数取得
    sParam1 = Range("B3")
    sParam2 = Range("C3")
    
    'パス取得
    fPath = ThisWorkbook.Path
    sPath = fPath & "\" & "test.bat" & " " & fPath & " " & sParam1 & " " & sParam2
    s2Path = fPath & "\" & "test2.bat"
    
    '結果テキストファイル名
    tName = "test.txt"
    tPathName = fPath & "\" & tName
    
    'Loop flag初期化(有効)
    fLoop = True
    Do While fLoop
        'Loop flag初期化(無効)
        fLoop = False
    
        'bat実行
        Call obj.Run(sPath, WaitOnReturn:=True)
        
        With CreateObject("ADODB.Stream")
            .Charset = "UTF-16"
            .Open
            .LoadFromFile tPathName
            buf = .ReadText
            .Close
        End With
        If InStr(buf, sCheck) <> 0 Then
            'ループを有効
            fLoop = True
        End If
        
        Call obj.Run(s2Path, WaitOnReturn:=True)
    Loop
End Sub
Sub RunBatWshShell()
    Dim obj As WshShell
    Set obj = New WshShell
    
    'batファイル名
    batName = Range("B1")
    
    '引数取得
    sParam1 = Range("B3")
    sParam2 = Range("C3")
    
    'パス取得
    fPath = ThisWorkbook.Path
    sPath = fPath & "\" & batName & " " & fPath & " " & sParam1 & " " & sParam2
    
    'bat実行
    Call obj.Run(sPath, WaitOnReturn:=True)
End Sub
@echo off
@rem テキストファイル名指定
set txtFile=%1\batlog.txt
set findString=aiue
@rem cygwinのteeコマンドを利用
@rem [command] [引数(%1)] 2>&1 | C:\cygwin64\bin\tee.exe %txtFile%
echo %2 %3 2>&1 | C:\cygwin64\bin\tee.exe %txtFile%
:loop
	findstr %findString% %txtFile% > NUL
	if "%ERRORLEVEL%"=="0" (
		@rem 文字列があればループ終了
	 	echo "検索あり"
		goto :end
	) else if "%ERRORLEVEL%"=="1" (
		@rem 文字列がなければ再実行
	  	echo "検索なし"
	  	@rem goto :loop
	)
:end
@rem コマンドが終わっても画面を閉じない
cmd /k
@rem テキストファイル削除
rm -f txtFile
参考
Powershellを楽に実行してもらうには - Qiita
PowerShellのGet-Contentでハマったところ - Qiita
Windowsバッチファイル(.bat)、処理が終わった後にウィンドウを閉じない|マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~
PowerShellでファイルから文字検索チェック - 社内SEの徒然なる日記
Powershellで引数を受け取る | マイクロソフ党ブログ
PowerShellスクリプティングの第一歩(後編) (2/5):Windows PowerShellコマンド&スクリプティング入門 - @IT
【PowerShell】繰り返し文(While, For)について | SEブログ
入力を2箇所に出力する(tee-object) - PowerShell Memo
参考
PowerShell/テキストファイルを1行ずつ読み込むサンプルコード - Windowsと暮らす
テキストファイルの読み込み、書き込み
VBAで他のアプリケーションを同期起動する(WshShell) | Excel作業をVBAで効率化
VBAでバッチファイル(bat)を実行する | Excel作業をVBAで効率化
バッチファイル(.bat)からパワーシェルファイル(.ps1)を実行する方法[PowerShell] : バヤシタ
Windowsで標準出力とファイルの両方へ出力している風に見せる - しもむブログ
コマンドプロンプト - Windows のコマンドプロンプトで、画面出力した上で、ログにも出力したい - スタック・オーバーフロー
コマンドの実行結果をファイルに出力する - Windows - Project Group
[Windows]バッチファイルで任意の文字列を入力させる | ごった煮 - tips about programming and building a server
【ExcelVBA入門】カレントディレクトリの取得・変更方法を徹底解説! | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト
【VBA入門】OpenメソッドでテキストファイルやCSVの読み込み | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト
標準出力 (stdout) と標準エラー (stderr) への出力をファイルに保存する | まくまくWindowsノート
コマンド プロンプトからのエラー メッセージをリダイレクトする: 標準エラー出力と標準出力
バッチファイルで変数を使う
Windowsのコマンドプロンプトでファイルを1行ずつ読み込む - Qiita
コマンドプロンプト findstr - [文字列や正規表現を使って文字列を検索する]
batファイルでコマンドの実行結果を出力しないようにする方法 - Qiita
findstrコマンドで検索した結果を条件分岐に用いる - とりあえず半歩
teeコマンドの使い方 - Qiita
バッチファイルでループ処理する
