运行Powershell脚本,在VBS的路径中包含空格

时间:2015-05-05 22:42:57

标签: powershell vbscript path spaces

有人可以帮助这个脚本吗?基本上,它由vbs运行,并为运行脚本的每个用户设置选项。

该脚本在支持dos 8.3文件系统的机器上工作,但我们也有相当多的成像系统,并且没有这种能力......

所以我毫不费力地试图让那些不支持8.3的机器运行它。 Powershell不喜欢文件路径中的空间......而且我试图以静默方式运行脚本。

Objshell.Run "powershell.exe (gc c:\users\$env:USERNAME\Mydocu~1\Canadi~1\FileImportSettings.config) -replace 'temp','server\blahblah' | out-file c:\users\$env:USERNAME\Mydocu~1\Canadi~1\FileImportSettings.config",0

评论变得混乱,所以我将其进一步发布到原帖...

我最初发布的内容是我尝试修复问题的一部分,它不会运行。这个编辑过的...但是当我尝试将其更改为双引号时,代码不再将用户名更改为%username%。我试过直接运行命令,cmd抱怨out-file不是公认的有效命令。

Wscript.echo "powershell.exe (gc ""c:\users\""$env:USERNAME""\Documents\Canadian...\FileImportSettings.config"") -replace 'temp','server\blahblah' | out-file ""c:\users\""$env:USERNAME""\Documents\Canadian....\FileImportSettings.config""",0

1 个答案:

答案 0 :(得分:0)

在PowerShell中包含空格的文件名。

简单<img src="#{user.profileImg}" class="currentImg"> 命令,(powershell别名)路径中没有空格:

8.3

准备路径中带有空格的(长)文件名(字符串连接)。单引号会导致字面值被回显;双引号会导致回显变量的实际值:

==>powershell (gc .\$env:USERNAME\yyyy.txt) -replace 'efg h','E FGH'
xxx1 abc D
xxx2 E FGH
xxx3 ijk L

用(长)文件名替换(powershell (gc $("'.\'"+$env:USERNAME+"'\yyyy.txt'")) -replace 'efg h','E FGH' 别名)路径,路径为空格:

8.3

管道:|出文件。

我们必须在下一个命令中转义powershell (gc $("'.\'"+$env:USERNAME+"'\yy yy.txt'")) -replace 'efg h','E FGH' 管道字符才能将其转发到|;否则,它适用于PoverShell shell,cmd错误。

'out-file' is not recognized as an internal or external command, operable program or batch file

的VBScript。

将所有内部powershell (gc $("'.\'"+$env:USERNAME+"'\yy yy.txt'")) -replace 'efg h','E FGH' ^| out-file $("'.\'"+$env:USERNAME+"'\yy yy.txt'") 双引号加倍。对于另一个工作目录,需要使用绝对路径作为文件名...

"

输出

' 30064463
option explicit
Dim cmdLine, objShell
cmdLine = "powershell (gc $(""'D:\bat\'""+$env:USERNAME+""'\yy yy.txt'"")) -replace 'efg h','E FGH' ^| out-file $(""'D:\bat\'""+$env:USERNAME+""'\yy yy.txt'"")"
Wscript.Echo cmdLine
Set objShell = WScript.CreateObject("WScript.Shell")
Objshell.Run "cmd /C " & cmdLine, 1, true
Wscript.Quit