【发布时间】:2018-11-14 06:32:45
【问题描述】:
为了return parameter values,我需要更改一个字符串,该字符串需要用表达式替换感叹号,以便这些感叹号在此过程的后期转义。当前的解决方案在 if 中不起作用。以下工作脚本很好地说明了这个问题:
@ECHO OFF
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET string="World^! wasserschutzpolizei^!"
REM REM Works quite well here!
REM SET "return1=!string:"=""!"
REM SET "return1=%return1:!=^^^!%"
REM SET "return1=!return1:""="!"
REM ECHO !return1!
IF NOT "!string!"=="" (
SET "return1=!string:"=""!"
REM This line doesn't work because of the % % inside the if...
REM Because it is one logical line.
SET "return1=%return1:!=^^^!%"
SET "return1=!return1:""="!"
ECHO !return1!
)
EXIT /B 0
ENDLOCAL
我有一种使用 CALL SET 的无效方法:
CALL SET "return1=%%return1:!=^^^!%%" 但这不起作用。
对于一个答案,考虑到我也需要延迟支付其他东西。
那么,我需要如何更改代码,尤其是行 SET "return1=%return1:!=^^^!%" 以便它在 if 中工作?
【问题讨论】:
-
您希望这个脚本能做什么?你能显示一个示例输出吗?
标签: batch-file cmd scripting windows-scripting