找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 15634|回复: 2

[问题求助] PowerShell展开多行文本中哈希表形式的参数变量

[复制链接]
发表于 2024-2-18 20:07:27 | 显示全部楼层 |阅读模式
本帖最后由 meixi 于 2024-2-19 11:55 编辑

我需要判断$s多行字符串变量中是否有哈希表形式的参数变量被之后的命令所使用(例如下面的$gcParam和$acParam),如果有,则将该变量中的参数改写成一行的格式, 放在命令的后面
如果让AI直接帮改,成功率非常高, 让它写代码, 就不行了, 求路过大佬支招

注意:
1.里面的开关参数, 为$true时, 变为一行时, 只要开关, 不需再赋值
2.哈希表中注释掉的参数直接忽略, 只提取没注释掉的参数
3.改成单行时,最好用单行的参数去直接分别替换@gcParam和@acParam, 因为命令前或命令后, 可能还有其它的代码, 例如 Get-Content 命令后有 管道, Add-Content 命令后还有注释
  1. $s= @'
  2. $gcParam = @{
  3.         Path           = "D:\c.txt"        #路径
  4.         Encoding   = 'UTF8'                #编码
  5.         TotalCount = 6                        #取前6行
  6.         #        Tail = 6                        #取后6行
  7.         #        ReadCount = 0                #一次通行
  8.         #        Include = ""                #包含
  9.         #        Exclude = ""                #排除
  10.         #        Filter = ""                        #过滤
  11.         Raw               = $true                 #整文
  12.         #        Force = $true                #强制
  13. }
  14. Get-Content @gcParam | Out-File 'c:\a.txt'

  15. $acParam = @{
  16.         Path          = "D:\c.txt"        #路径
  17.         Value          = "hello"                #追加的文本
  18.         Encoding  = 'UTF8'                #编码
  19.         #        Force = $true                #强制
  20.         NoNewline = $true                #不要新行
  21. }
  22. Add-Content @acParam #向文本文件中添加文本
  23. '@

  24. <# 处理后的结果:
  25. Get-Content -Path = "D:\c.txt" -Encoding = 'UTF8' -TotalCount = 6 -Raw | Out-File 'c:\a.txt'

  26. Add-Content -Path "D:\c.txt" -Value "hello" -Encoding 'UTF8' -NoNewline #向文本文件中添加文本
  27. #>
复制代码
发表于 2024-2-18 21:30:22 | 显示全部楼层
啊这,建议通过解析器 来解析
System.Management.Automation.Language.Parser

System.Management.Automation.PSParser
 楼主| 发表于 2024-2-19 07:19:17 | 显示全部楼层
本帖最后由 meixi 于 2024-2-19 12:37 编辑

回复 2# Five66


    多谢大佬指导!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 04:10 , Processed in 0.017510 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表