Windows バッチ ファイルで新しい文字列を分割して作成しようとしていますが、その方法がわかりません。
私はこれを変換しようとしています:
Crysis3_2560x1440
これに:
Crysis 3 - 2560x1440
その後:
HD7970CrossFire
これに:
HD 7970 CrossFire
助言がありますか?
Windows バッチ ファイルで新しい文字列を分割して作成しようとしていますが、その方法がわかりません。
私はこれを変換しようとしています:
Crysis3_2560x1440
これに:
Crysis 3 - 2560x1440
その後:
HD7970CrossFire
これに:
HD 7970 CrossFire
助言がありますか?
編集:これは、コメントに記載されている特殊なケースを管理する新しいバージョンです:
@echo off
setlocal EnableDelayedExpansion
for /F %%a in (inputFile.txt) do (
set string=%%a
echo Original: !string!
call :Splint string
echo Modified: !string!
)
goto :EOF
:Splint string
set string=!%1!
rem Change underscore by space-dash-space
set string=%string:_= - %
rem Separate the string at first group of digits or space
for /F "tokens=1* delims=0123456789 " %%a in ("%string%") do (
set first=%%a
set last=%%b
)
rem Eliminate first part from middle
set middle=!string:%first%=!
rem Eliminate last part from middle, if exists
if defined last set middle=!middle:%last%=!
rem Eliminate spaces from middle
set middle=%middle: =%
rem Assemble the result
if defined middle (
set %1=%first% %middle% %last%
) else (
set %1=%first% %last%
)
exit /B
出力:
Original: Crysis3_2560x1440
Modified: Crysis 3 - 2560x1440
Original: HD7970CrossFire
Modified: HD 7970 CrossFire
Original: Skyrim_2560x1440
Modified: Skyrim - 2560x1440
Original: SleepingDogs_2560x1440
Modified: SleepingDogs - 2560x1440
Original: GTX680
Modified: GTX 680
アントニオ
これらのスニペットをベースとして使用できます...
set in=Crysis3_2560x1440
set out=!in:_= - !
set in
set out
と...
set in=HD7970CrossFire
set out=!in:HD7970CrossFire=HD 7970 CrossFire!
set in
set out
なぜあなたがただ行かないのか私にはわかりませんが
set str=HD 7970 CrossFire