Powershell CMD中单引号和双引号的区别
我有一个powershell文件,它替换配置文件中的IP。 powershell具有三个参数:Powershell CMD中单引号和双引号的区别,powershell,batch-file,cmd,Powershell,Batch File,Cmd,我有一个powershell文件,它替换配置文件中的IP。 powershell具有三个参数: 文件名('C:\ProgramFiles(x86)\app\app.conf') 要替换的IP 新知识产权 由于我们的服务依赖于使用批处理文件来处理任务,因此我编写了一个批处理脚本,该脚本只接受三个参数,并将其发布到powershell脚本 我们使用批处理文件调用和解析参数: ($仅用于表示变量) 这失败了,但我不明白为什么。我尝试过在$filepath周围使用双引号而不是单引号,效果很好 如何用双引
'C:\ProgramFiles(x86)\app\app.conf'
)$filepath
周围使用双引号而不是单引号,效果很好
如何用双引号而不是单引号来理解
$filepath
中的空格?我假设您正在调用powershell中的批处理文件及其变量。
单引号表示它们之间文本的原样状态,而不是将其展开为变量,其中双引号展开变量并将文本包装为单个字符串
例如
这将尝试搜索名为$Hostname的计算机
$Hostname = "Computer Name"
Get-WmiObject Win32_computersystem -ComputerName "$Hostname"
这将尝试搜索名为“计算机名”的计算机
这是一个糟糕的例子,因为您不需要对其中任何一个使用引号,但您知道了。简而言之,CMD只将单引号视为常规字符。它不像双引号那样是一对/一组
单引号唯一具有特殊意义的地方是在FOR/F
循环中,在该循环中指定一个命令来运行并迭代输出
FOR /F %%d IN ('DIR /S /B C:\Windows') DO @ECHO File: %%d
FOR/F
有一个选项可以使用反勾号,以防您需要将单引号传递给被调用的进程,但这与您的问题无关。如果没有changeip.bat的代码,就有点难以解释为什么它不起作用。可能是重复的。在其他笔记上帮了不少忙。谢谢你,魔术师!非常感谢你的帮助!
$Hostname = "Computer Name"
Get-WmiObject Win32_computersystem -ComputerName "$Hostname"
FOR /F %%d IN ('DIR /S /B C:\Windows') DO @ECHO File: %%d