繁体   English   中英

当变量的文件名中带有“ /”时,PowerShell外文件不起作用

[英]PowerShell out-file not working when variable has a “/” in filename

我有一个运行GET并将结果保存到文件的Powershell脚本。 文件名使用的是来自GET URL的变量,但是,正斜杠存在“ /”。 该文件未保存,因为它不喜欢正斜杠。

$hostURL = "my_webserver"
$methType = "GET"
$api4 = "/sasl_logs/debug"
$txt | out-file ".\$api4.txt"

结果是一个名为/sasl_logs/debug.txt或/sasl_logs_debug.txt的文件。 我试图让替换功能正常工作,但是我一定做错了。

$api4.replace("//","_")
$api4.replace("/","_")
$api4.replace("\/","_")

这里的问题不是斜线。 并非您认为的那样。 Windows(和Powershell)支持/定界的路径名就很好(许多/大多数其他Windows应用程序也一样)。

这里的问题是路径/sasl_logs/debug被视为绝对路径(以斜杠开头),因此被视为C:\\sasl_logs\\debugOut-File拒绝创建sasl_logs目录,因此它可以将debug文件放在该位置。

创建C:\\sasl_logs目录,它应该可以正常工作。

如果您不想要该目录(或者根本不希望有任何目录),而$api4值不是按$api4设置的(因此您不能只是更改代码),那么您想要的就是您尝试的东西。

$api4 = $api4.Substring(1) -replace "/","_"

Substring去除前导/ ,然后-replace运算符进行替换。 您当然也可以使用$api4.Substring(1).Replace("/","_")

从您的文章和评论,这听起来像你最终问如何成功地取代“/”字符...

$api4 = "/sasl_logs/debug"
$api4 = $api4.Replace("/","_")

好的,这很好,谢谢Etan Reisner

$txt | out-file ".\$api.txt".Replace("/","_")

创建一个名为

_sasl_logs_debug.txt

正在领导_工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM