powershell - 是否可以将文本文件更改为批处理,执行它,然后将其恢复为 powershell 脚本中的文本?
问题描述
目标:编写一个powershell脚本将文件从a更改.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%"
解决方案
而不是像你提到的那样依赖睡眠,我会先测试文件是否存在。
Write-Host "Renaming $($PatchPath)$($FileName) to LivePatch.bat"
Rename-Item "$($PatchPath)$($FileName)" "LivePatch.bat"
if([System.IO.File]::Exists("$($PatchPath)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)"
}
推荐阅读
- rust - Rust 无法识别借用在循环结束时结束
- firebase - 从现有的云功能 Flutter 项目开始
- c# - BlockingCollection 中的多个消费者是否同时处理?
- javascript - Vue.js 在console.log 中看不到数据
- matplotlib - Jupyter notebook 中的交互式 matplotlib 与远程服务器上的 shell 命令“!python filename.py” ssh -i 访问
- sql - 在sql中分组后获取总百分比拆分
- mysql - 如果找不到数据,Mysql会添加临时列
- amazon-sagemaker - 如何使用 Estimator 在 sagemaker 中保存 model.tar.gz 文件
- javascript - JavaScript Dom 操作以删除文本
- azure-devops - 订阅 Microsoft Teams 中的服务挂钩时,有没有办法在 Azure Devops/Repos/Pipelines 生成的消息中获取 @提及?