Derzeit verwende ich dieses Skript, um ein Datum in yyyyMMdd
Format in dd/MM/yyyy
Format zu konvertieren.Wie Erfassen Powershell-Fehler in Batch-Skripts?
for /f "delims=" %%a in ('powershell -Command "& {([datetime]::parseexact('%testDate%','yyyyMMdd',[System.Globalization.CultureInfo]::InvariantCulture)).ToString('dd/MM/yyyy')}"') do SET testDate=%%a
Wenn ich Eingabe ungültiger Zeichen/Datum-Zeit-Struktur für die %testDate%
Variable, in Powershell IDE, eine Fehlermeldung führt, "String was not recognized as a valid DateTime"
.
In Batch-Skripts wird jedoch nur eine leere testDate
Variable zurückgegeben. Es gibt auch errorlevel = 0
zurück.
Wie gebe ich die Fehlermeldung von Powershell in Batch-Skripten zurück?
Voll Skript
@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
put try/catch [Batch try/catch] (http: // Stackoverflow
A
try/catch
Anweisung kann dies zu erreichen, verwendet werden.com/fragen/21772060/Batch-Datei-try-catch). [Fehlerbehandlung im Stapel] (http://stackoverflow.com/questions/1164049/batch-files-error-handling) –@RanadipDutta, was ich möchte, ist die Fehlermeldung von Powershell erzeugt, nicht meinen eigenen Fehler erstellen Nachricht, wenn ein Problem vorliegt. – Mark
Warum überhaupt eine Batch-Datei verwenden? Schreiben Sie einfach das gesamte Skript in PowerShell. Viel, viel einfacher. –