[英]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\\debug
, Out-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.