Цель: Написать скрипт powershell, чтобы изменить файл с .txt
на .bat
, выполнить пакетный файл и затем преобразовать его обратно в .txt
.
Что я пробовал:
Write-Host "Renaming $($PatchPath)$($FileName) to LivePatch.bat"
Rename-Item "$($PatchPath)$($FileName)" "LivePatch.bat"
Write-Host "Running $($PatchPath)LivePatch.bat"
Start-Process "$($PatchPath)LivePatch.bat" 3>&1 2>&1 > "$($PatchPath)\results.txt"
Write-Host "Returning $($PatchPath)LivePatch.bat to it's original name: $($FileName)."
Rename-Item "$($PatchPath)LivePatch.bat" "$($FileName)"
Где $PatchPath = "D:\Patches\"
и $FileName = "LivePatch.txt
.
Проблема: Это преобразует файл в пакет,как я вижу из просмотра проводника во время выполнения, но когда он пытается выполнить его, он возвращает следующее:
'"D:\Patches\LivePatch.bat"' is not recognized as an internal or external command,
operable program or batch file.
Я проверил и убедился, что могу выполнять пакетные сценарии, как будто я пытаюсьвыше с пакетными сценариями, которые уже существуют и которые отлично работают.
Старое рабочее решение: Это пакетный сценарий, который я использовал для этой цели, и предполагается, что этот сценарий powershell должензаменить:
REM rename %PatchPath%%FileName% "LivePatch.bat"
rename %PatchPath%%FileName% "LivePatch.bat"
REM Run Live Patch file %PatchPath%LivePatch.bat
REM call %PatchPath%LivePatch.bat > "%PatchPath%results.txt" 2>&1
call %PatchPath%LivePatch.bat > "%PatchPath%results.txt" & type "%PatchPath%results.txt"
rename "%PatchPath%LivePatch.bat" "%FileName%"