我试图编写一个基本上可以替换像1 (1) --> x01y01
或20 (20) --> x20y20
这样的字符串的批处理。所以我正在处理我已经拥有的另一个用户帮助我的批处理。我试图做像
SET OriginalName=!OriginalName:)=!
SET OriginalName=!OriginalName: (=y!
这至少会删除括号和空格,并留下我1y1和20y20,我会尝试添加其余的但我不知道如何处理括号和空格。我无法在here中找到答案。
答案 0 :(得分:1)
此方法适用于所有情况,即使数字为1或2位数字:
@echo off
setlocal EnableDelayedExpansion
SET "OriginalName=1 (1)"
SET "aux=%OriginalName:)=%"
SET "aux=%aux:(=% "
SET "l=xy"
set "r=" & set /A "n=%aux: =+100" & set "r=!r!!l:~0,1!!n:~-2!" & set "l=!l:~1!" & set /A "n=%0"
echo %OriginalName% --^> %r%
输出示例:
1 (1) --> x01y01
20 (20) --> x20y20
该方法也可以轻松扩展以使用更多值。例如,要获得下面的结果,只需以这种方式修改l
变量的值:SET "l=xyzt"
:
1 (20) 3 (40) --> x01y20z03t40
如果您想知道该方法的工作原理,只需删除@echo off
行并查看即可!的 ;)
强>
答案 1 :(得分:0)
确保在脚本的开头(或者至少在下面的脚本开头)有这个:
SETLOCAL EnableDelayedExpansion
如果第一个和第二个数字始终相同,请使用:
SET "num=!OriginalName:~,2!"
IF !num! LEQ 9 (
SET "OriginalName=x0!OriginalName:)=!"
SET "OriginalName=!OriginalName: (=y0!"
) ELSE (
SET "OriginalName=x!OriginalName:)=!"
SET "OriginalName=!OriginalName: (=y!"
)
输入:1 (1)
和20 (20)
输出:x01y01
和x20y20
如果第一个和第二个数字不总是相同,请使用:
SET "num_1=!OriginalName:~,2!"
IF !num_1! LEQ 9 (
SET "OriginalName=x0!OriginalName:)=!"
) ELSE (
SET "OriginalName=x!OriginalName:)=!"
)
SET "num_2=!OriginalName:~-2!"
IF !num_2! LEQ 9 (
SET "OriginalName=!OriginalName: (=y0!"
) ELSE (
SET "OriginalName=!OriginalName: (=y!"
)
输入:1 (20)
和20 (1)
输出:x01y20
和x20y01