2017-08-12 27 views
2

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

例I:

"hello" >> janice.txt 

正如我们看到的,榜样的结果,我会叫janice.txt

实施方式II的文本文件。 janice.txt就像第一个例子,因为变量$ i的存储字符串“贾尼斯”:

$i = "janice" 
"hello" >> $i.txt 

,我会从例如II预计将被命名为一个文本文件的结果。

Powershell正在执行没有错误的命令,但没有创建.txt文件。 我想弄清楚为什么它不工作,如果有的话,它是完全不相关的。

这是我第一次问一个问题,所以我提前道歉,如果它是罗嗦,而非常模糊。

回答

4

试试这个:

"hello" >> "$i.txt" 

:)

+1

括号不是必须的,双引号就足够了。 (要扩展字符串中的$ var.property,您必须使用'“$($ var.property).txt”' – LotPings

+0

Eureka!现在具有完美意义,非常感谢:0 –

4

后明显别人指给我; $i.txt正在做一个属性查找。像$i.Length$file.FullName

由于没有名为.txt的属性,查找返回$null,并且您的写入无法如"hello" > $null

证明:运行PowerShell的分词对的两段代码,看看他们如何在内部处理:

[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 

一个重定向操作,与左侧的字符串和右侧的命令参数。比。

[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 

的字符串和重定向操作,与在右侧(一个变量,所述操作者.和“TXT”作为成员)。

+0

所以我基本上只是在null !非常感谢,我将深入阅读这个答案,很多很好的信息。再次感谢!!!! –

+0

知道诊断的好方法! –

相关问题