CMD中单引号和双引号的区别

Rus*_*dhe 4 powershell cmd batch-file

我有一个 powershell 文件,用于替换配置文件中的 IP。powershell 接受三个参数:

  1. 文件名 ( 'C:\Program Files (x86)\app\app.conf')
  2. 更换IP
  3. 新IP

由于我们依赖于为我们的服务使用批处理文件来处理任务,因此我编写了一个批处理脚本,该脚本只需要三个参数并将其发布到 powershell 脚本。

我们使用批处理文件来调用和解析参数: ($只是用来表示变量)

changeip.bat '$filepath' $oldip $newip
Run Code Online (Sandbox Code Playgroud)

这失败了,但我不明白为什么。我试过使用双引号而不是单引号$filepath,它奏效了。

如何$filepath用双引号而不是单引号来理解空格?

moj*_*ojo 6

简短的回答是CMD 不会将单引号视为常规字符。它不是像双引号那样的对/组。

单引号具有任何特殊含义的唯一地方是在FOR /F循环中,您可以在其中指定要运行和迭代输出的命令。

FOR /F %%d IN ('DIR /S /B C:\Windows') DO @ECHO File: %%d
Run Code Online (Sandbox Code Playgroud)

FOR /F 可以选择使用反引号,以防您需要将单引号传递给被调用的进程,但这与您的问题无关。