仅通过SET更改小写字母?

时间:2018-09-17 21:48:10

标签: batch-file

此代码将变量中的r更改为r0.0(注意之前和之后的空格)。如何确保仅在r小而不是大写的情况下完成此操作?目前,两者都可以。问题在于该字符串也具有大写字母R,不能一视同仁。

set "string=%string: r = r0.0 %"

个字符串示例The Movie Title (2000) Director [Genre, Another] R r6.7 1080p x265 AAC-tt0000000.mkvThe Other Film (1999) Directeur [Genre] PG-13 r 2160p x265 AC3-tt0000000.mp4,其中单个小的r几乎意味着服务器中没有单个评级。我想显示r0.0。大写字母R将更改为k17,以此类推,这是更大的代码

:: how do I only replace small r this way to avoid the certificate
:: set "filename=%filename: r = r0.0 %"
:: certificates begin
set "filename=%filename:] nr r=] r%"        & rem not rated
:: these have been changed over the years, for example nc-17 used to be k16, could use year based naming.
set "filename=%filename:] g r=] k0 r%"      & rem verified K0: ALL AGES
set "filename=%filename:] tv-y r=] k0 r%"   & rem verified K0: FOR KIDS, INCLUDING AGES 2-6
set "filename=%filename:] tv-g r=] k0 r%"   & rem verified K0: ALL AGES
set "filename=%filename:] tv-y7 r=] k7 r%"  & rem verified K7: AGE 7 AND ABOVE
:: these are flexible, set own
set "filename=%filename:] pg r=] k9 r%"     & rem Some material may not be suitable for young children. Between K7 and K12?
set "filename=%filename:] tv-pg r=] k9 r%"  & rem May be unsuitable to young children. Somewhere between K8 and K13?
:: these are also definite
set "filename=%filename:] pg-13 r=] k13 r%" & rem verified K13: MAY NOT SUIT PRETEENS
set "filename=%filename:] tv-14 r=] k14 r%" & rem verified K14: MAY NOT SUIT UNDER 14
set "filename=%filename:] r r=] k17 r%"     & rem verified K17: UNDER 17 W/GUARDIAN
set "filename=%filename:] tv-ma r=] k17 r%" & rem verified K17: MAY NOT SUIT UNDER 17
set "filename=%filename:] tvma r=] k17 r%"  & rem verified K17: MAY NOT SUIT UNDER 17
set "filename=%filename:] nc-17 r=] k18 r%" & rem verified K18: NO-ONE 17 OR UNDER

1 个答案:

答案 0 :(得分:3)

@echo off
setlocal EnableDelayedExpansion

set "string=A low case r and an upcase R too"
echo %string%

set "str=%string%" & set "p=%%" & set "out="
set "s=%string: r =" & call set "str=!p!str:*!s!=!p!" & (if "!str:~0,3!" equ " r " (set "out=!out!!s! r0.00 ") else set "out=!out!!s! k17 ") & set "str=!str:~3!" & set "s=%" & set "out=!out!!s!"

echo %out%

输出:

A low case r and an upcase R too
A low case r0.00 and an upcase k17 too