Board logo

标题: [问题求助] PowerShell怎样把字面字符串中的变量展开? [打印本页]

作者: 小白龙    时间: 2024-3-30 13:01     标题: PowerShell怎样把字面字符串中的变量展开?

下面$HOME是字面量文本, 怎样展开它呢? 下面代码无效
  1. $s = '$HOME\desktop\春天来了.pdf'
  2. Resolve-Path  $s
复制代码

作者: Batcher    时间: 2024-3-30 15:07

回复 1# 小白龙


    把单引号改成双引号试试
作者: Five66    时间: 2024-3-30 16:29

英文单引号
换成
英文双引号

用$()界定变量(表达式)

用{}界定变量名
作者: 小白龙    时间: 2024-3-30 16:35

回复 3# Five66


    感谢楼上两位指导,
可能我描述的有问题, 我需要展开的就是字面量, 它是读取某个文件中的值, 不能手动加"
作者: Batcher    时间: 2024-3-30 16:38

回复 4# 小白龙


    请发完成代码
作者: 小白龙    时间: 2024-3-30 16:46

回复 5# Batcher


    完成代码就是解析字符串里面的变量实际值, 再加上其后面的文本, 例如我的电脑上展开应该是

C:\Users\Administrator\Desktop\春天来了.pdf
作者: 小白龙    时间: 2024-3-30 16:47

本帖最后由 小白龙 于 2024-3-30 16:49 编辑

回复 3# Five66


    感觉可能无解, 或者实现起来太麻烦了, 还有下面这种情况:

'$env:APPDATA\abc.txt'
作者: Five66    时间: 2024-3-30 17:02

是这样子么?

$s = "$HOME"+'\desktop\春天来了.pdf'

$s = "$env:APPDATA"+'\abc.txt'
作者: 小白龙    时间: 2024-3-30 18:26

回复 8# Five66


    不是这样的, 就是像我最开头的那种, 全是单引号引起来的
作者: idwma    时间: 2024-3-30 19:25

把字符套起来吗
  1. '$s="' + $s + '"' | iex
复制代码

作者: aloha20200628    时间: 2024-3-30 19:45

本帖最后由 aloha20200628 于 2024-3-30 19:48 编辑

回复 6# 小白龙
  1. powershell -c "$s='$HOME\desktop\春天来了.pdf';$p=$ExecutionContext.InvokeCommand.ExpandString($s);echo($p);"
复制代码
  1. $s='$HOME\desktop\春天来了.pdf'
  2. $p=$ExecutionContext.InvokeCommand.ExpandString($s)
  3. echo($p)
复制代码

作者: evilDegg    时间: 2024-3-30 22:07

牛逼!!!!!!!!
作者: Five66    时间: 2024-3-31 15:22

回复 9# 小白龙


    这样的话,除非有规律,不然无解(不准确)
例如
'$abcd\123.txt'
你要展开的是$a , 还是$ab , 还是$abc ,又或者是$abcd
让ps自己来的话就直接展开$abcd了 , 这可能不是你想要的 , 自己来的话就可能不通用了(没有规律的话)
作者: 小白龙    时间: 2024-3-31 21:56

回复 13# Five66


    大佬真够细心的, 确实有这个情况




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2