現在、このスクリプトを使用して、yyyyMMdd
形式の日付をdd/MM/yyyy
形式に変換しています。バッチスクリプトでpowershellエラーをキャプチャするには?
for /f "delims=" %%a in ('powershell -Command "& {([datetime]::parseexact('%testDate%','yyyyMMdd',[System.Globalization.CultureInfo]::InvariantCulture)).ToString('dd/MM/yyyy')}"') do SET testDate=%%a
PowerShellのIDEで%testDate%
変数のためのI入力に無効な文字/日時構造は、それはエラーメッセージをスローし、"String was not recognized as a valid DateTime"
。
ただし、バッチスクリプトでは、空のtestDate
変数のみが返されます。また、errorlevel = 0
を返します。
powershellからエラーメッセージをバッチスクリプトで返すにはどうすればよいですか?
全スクリプト
@echo off
setlocal enabledelayedexpansion
REM Get user's inputs
:beginning
SET /p testDate="Please enter the date in yyyyMMdd format (e.g., 20171128)" || goto beginning
if /I "%testDate%"=="t" (
for /f "delims=" %%a in ('powershell -Command "& get-date -format 'dd/MM/yyyy'"') do SET testDate=%%a
) ELSE (
if /I "%testDate%"=="yt" (
for /f "delims=" %%a in ('powershell -Command "& get-date (get-date).AddDays(-1) -format 'dd/MM/yyyy'"') do set testDate=%%a
) ELSE (
for /f "delims=" %%a in ('powershell -Command "& {([datetime]::parseexact('%testDate%','yyyyMMdd',[System.Globalization.CultureInfo]::InvariantCulture)).ToString('dd/MM/yyyy')}"') do SET testDate=%%a
REM Testing
echo !testDate!
echo Yes!
)
)
REM Testing
echo !testDate!
echo !errorLevel!
pause
プットのtry/catch [バッチのtry/catch](のhttp://のstackoverflow。com/questions/21772060/batch-file-try-catch)。 [バッチでのエラー処理](http://stackoverflow.com/questions/1164049/batch-files-error-handling) –
@RanadipDutta私が欲しいのは、powershellで生成されたエラーメッセージを返すことです。自分のエラーを作成しません。問題が発生したときのメッセージ。 – Mark
なぜバッチファイルを使用するのですか? PowerShellにスクリプト全体を書くだけです。ずっと簡単です。 –