在 cmd 提示符下的这些 Powershell -replace 命令中,为什么第一个成功转义双引号而第二个没有?
In these Powershell -replace commands from the cmd prompt, why does the first escape double quotes successfully and the second doesn't?
C:\>Powershell -NoProfile "(Get-Content -Raw .\allacts.txt) -replace '\u0020\u0020\u0020\u0020\u007D\u002C\u000d\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0022\u0073\u0074\u0075\u0064\u0065\u006E\u0074\u0054\u006F\u0074\u0061\u006C\u0022\u003A\u0020', \" `\"studentTotal`\": \" | Out-File -FilePath allacts.txt -Force -Encoding ASCII -nonewline"
这可以正常工作并且 return 没有任何错误。如您所见,我需要用双引号替换一个字符串。
C:\>Powershell -NoProfile "(Get-Content -Raw .\allacts.txt) -replace '\u0022\u000d\u000A\u0020\u0020\u0020\u0020\u0020\u0020', \" `\" \" | Out-File -FilePath allacts.txt -Force -Encoding ASCII -nonewline"
'Out-File' is not recognized as an internal or external command,
operable program or batch file.
以上方法无效。我不明白为什么 - 它的转义方式与第一个命令完全相同。
我必须在批处理文件中使用这些命令,因为我无法在该系统上 运行 Powershell 脚本。我在 SO 上搜索了很多关于转义引号的问题。 ^ 在双引号内不起作用。如果存在 |是问题所在,如 this answer 中所建议的那样,那么它对这些示例中的任何一个都不起作用。
您可以看到我在命令的“查找”部分使用了 unicode。我会在“替换”部分使用它,但无论我使用单引号还是双引号,它都是按字面解释的。也就是说,它不会插入 " 字符,而是插入六个字符 /u0022 - 如果您知道如何按照我需要的方式进行操作,请告诉我。
编辑:
Powershell -NoProfile "(Get-Content -Raw .\allacts.txt) -replace '\u0022\u000d\u000A\u0020\u0020\u0020\u0020\u0020\u0020', \" `\" `\" \" | Out-File -FilePath allacts.txt -Force -Encoding ASCII -nonewline"
有效,但这意味着当我只想要一个双引号时我会得到两个双引号。
第二行在replace-with部分有一个不平衡的单引号和一个不平衡的双引号。更正此问题,脚本将与第一行相同。
C:\>Powershell -NoProfile "(Get-Content -Raw .\allacts.txt) -replace '\u0020\u0020\u0020\u0020\u007D\u002C\u000d\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0022\u0073\u0074\u0075\u0064\u0065\u006E\u0074\u0054\u006F\u0074\u0061\u006C\u0022\u003A\u0020', \" `\"studentTotal`\": \" | Out-File -FilePath allacts.txt -Force -Encoding ASCII -nonewline"
这可以正常工作并且 return 没有任何错误。如您所见,我需要用双引号替换一个字符串。
C:\>Powershell -NoProfile "(Get-Content -Raw .\allacts.txt) -replace '\u0022\u000d\u000A\u0020\u0020\u0020\u0020\u0020\u0020', \" `\" \" | Out-File -FilePath allacts.txt -Force -Encoding ASCII -nonewline"
'Out-File' is not recognized as an internal or external command,
operable program or batch file.
以上方法无效。我不明白为什么 - 它的转义方式与第一个命令完全相同。
我必须在批处理文件中使用这些命令,因为我无法在该系统上 运行 Powershell 脚本。我在 SO 上搜索了很多关于转义引号的问题。 ^ 在双引号内不起作用。如果存在 |是问题所在,如 this answer 中所建议的那样,那么它对这些示例中的任何一个都不起作用。
您可以看到我在命令的“查找”部分使用了 unicode。我会在“替换”部分使用它,但无论我使用单引号还是双引号,它都是按字面解释的。也就是说,它不会插入 " 字符,而是插入六个字符 /u0022 - 如果您知道如何按照我需要的方式进行操作,请告诉我。
编辑:
Powershell -NoProfile "(Get-Content -Raw .\allacts.txt) -replace '\u0022\u000d\u000A\u0020\u0020\u0020\u0020\u0020\u0020', \" `\" `\" \" | Out-File -FilePath allacts.txt -Force -Encoding ASCII -nonewline"
有效,但这意味着当我只想要一个双引号时我会得到两个双引号。
第二行在replace-with部分有一个不平衡的单引号和一个不平衡的双引号。更正此问题,脚本将与第一行相同。