批量查找和替换字符串中的字符

Batch find and replace chars in string

我有两个字符串变量:

@echo off
set string_1=abc def ghj
set string_2=abc_def_ghj

string_1中我需要用%20替换空格,所以结果会是:

abc%20def%20ghj

string_2中我需要用空格替换_,所以结果将是:

abc def ghj

我需要使用批处理 (.bat) 文件,有哪些选项可以执行此操作?

您可以使用string manipulation替换您想要的字符。

@echo off
setlocal enabledelayedexpansion

set "string_1=abc def ghj"
set string_2=abc_def_ghj

set new_string_1=!string_1: =%%20!
set new_string_2=%string_2:_= %

echo Old String 1: %string_1%
echo New String 1: %new_string_1%
echo Old String 2: %string_2%
echo New String 2: %new_string_2%
pause

我必须在字符串 1 中启用延迟扩展,以便内部和外部百分号不会相互抵消。

Variable Edit/Replace with minimalized EnableDelayedExpansion 范围:

@ECHO OFF
SETLOCAL enableextensions

set "string_1=1abc def ghj"
SETLOCAL enabledelayedexpansion
  set "string_1=!string_1: =%%20!"
ENDLOCAL&set "string_1=%string_1%"
echo %string_1%

set "string_2=2abc_def_ghj"
set "string_2=%string_2:_= %"
echo %string_2%

注意 ENDLOCAL&set "string_1=%string_1%" 行(不要更改 它)。

输出:

==>30087503.bat
1abc%20def%20ghj
2abc def ghj