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

时间:2015-05-06 21:05:35

标签: batch-file search replace scripting

我有两个字符串变量:

@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)文件,有什么选择呢?

2 个答案:

答案 0 :(得分:2)

Variable Edit/Replace最小化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

答案 1 :(得分:1)

您可以使用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中启用延迟扩展,以便内部和外部百分号不会相互抵消。