[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] [已解决]请教powershell提取文本指定字符再替换

本帖最后由 smss 于 2020-12-8 13:17 编辑

文本A
  1. # Enable automatic restart after Windows Update installation
  2. Function EnableUpdateRestart {
  3. Write-Output "Enabling Windows Update automatic restart..."
  4. Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\MusNotification.exe" -Name "Debugger" -ErrorAction SilentlyContinue
  5. }
  6. # Disable nightly wake-up for Automatic Maintenance and Windows Updates
  7. Function DisableMaintenanceWakeUp {
  8. Write-Output "Disabling nightly wake-up for Automatic Maintenance..."
  9. If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU")) {
  10. New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Force | Out-Null
  11. }
  12. Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "AUPowerManagement" -Type DWord -Value 0
  13. Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\Maintenance" -Name "WakeUp" -Type DWord -Value 0
  14. }
  15. #不多还有500条BUG...
复制代码
提取Write-Output "之间的字符" 我的方法不好 正则表达式太难了
生成文本B
  1. powershell "(Gc A.txt) -match 'Write-Output \"(.+?)\"'>B.txt;"
复制代码
  1. powershell "if(((Gc A.txt) -join \"`r`n\") -match 'Write-Output \"(.+?)\"'){$matches[1]>3.txt};"
复制代码
为什么只有一条 都说ps真香好用 无奈只能用BAT

生成文本C
  1. (for /f "tokens=1,2 delims=-" %%a in (B.txt)do set n=%%b&Echo !n:~8,-1!)>C.txt
复制代码
  1. Enabling Windows Update automatic restart...
  2. Disabling nightly wake-up for Automatic Maintenance...
复制代码
翻译文本C得到文本D
  1. 正在启用Windows Update自动重启...
  2. 禁用夜间唤醒以进行自动维护...
复制代码
文本D替换掉文本A Write-Output "要翻译的部分"

返回列表