使用输出运算符在powershell中命名.txt文件

Ric*_*ada 2 windows powershell

我正在尝试创建一个变量,它将使用powershell中的输出运算符命名文本文件.第一个例子是通常在没有变量(有效)的情况下完成的事情,第二个例子是我尝试这样做的方式(它不起作用).

例I:

"hello" >> janice.txt
Run Code Online (Sandbox Code Playgroud)

我们可以看到,示例I的结果将是一个名为janice.txt的文本文件

例II.

$i = "janice"
"hello" >> $i.txt
Run Code Online (Sandbox Code Playgroud)

我期望从示例II得到的结果将是一个名为:janice.txt的文本文件,就像第一个示例一样,因为变量$ i存储字符串"janice".

Powershell正在执行命令而没有错误,但没有创建.txt文件.我试图弄清楚为什么它不起作用,如果有的话,它是完全无关紧要的.

这是我第一次提出问题,所以如果它是罗嗦而且含糊不清,我会事先道歉.

Tes*_*ler 5

别人向我指出之后显而易见; $i.txt正在进行属性查找.喜欢$i.Length$file.FullName.

由于没有调用属性.txt,查找返回$null并且您的写入无处可去"hello" > $null.

证明:针对这两段代码运行PowerShell tokenizer,以了解它们在内部的处理方式:

[System.Management.Automation.PSParser]::Tokenize('"a" > janice.txt', [ref]$null)  | 
    Select-Object Content, Type |
    Format-List


Content : a
Type    : String

Content : >
Type    : Operator

Content : janice.txt
Type    : CommandArgument
Run Code Online (Sandbox Code Playgroud)

重定向运算符,左侧是字符串,右侧是命令参数.比.

[System.Management.Automation.PSParser]::Tokenize('"a" > $i.txt', [ref]$null) |
    Select-Object Content, Type |
    Format-List


Content : a
Type    : String

Content : >
Type    : Operator

Content : i
Type    : Variable

Content : .
Type    : Operator

Content : txt
Type    : Member
Run Code Online (Sandbox Code Playgroud)

字符串和重定向运算符,.右侧是(变量,运算符和'txt'作为成员).