我想分裂並在Windows批處理文件中創建一個新的字符串,但我無法弄清楚如何做到這一點。如何在Windows批處理文件中拆分字符串?
我試圖將此轉換:
Crysis3_2560x1440
要這樣:
Crysis 3 - 2560x1440
然後:
HD7970CrossFire
要這樣:
HD 7970 CrossFire
有什麼建議嗎?
我想分裂並在Windows批處理文件中創建一個新的字符串,但我無法弄清楚如何做到這一點。如何在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=" %%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
安東尼
快速的解決方案? – 2013-03-12 05:22:37
哇,這太棒了!我只是試了一下,大部分情況下我都發現了一些問題。 1.「Skyrim_2560x1440」和「SleepingDogs_2560x1440」導致「Skyrim- 2560 x1440」 2.同樣,如果第二個字符串像「GTX680」沒有第三部分,我得到:「修改:GTX中: =「 非常感謝您的出發! – 2013-03-12 05:28:36
@RyanShrout:檢查新版本! – Aacini 2013-03-12 17:14:40
你可以使用這些片段作爲基地...
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
不確定批處理文件,但你可以使用PowerShell? – 2013-03-12 02:32:00
可能重複[如何在Windows批處理文件中拆分字符串?](http://stackoverflow.com/questions/1707058/how-to-split-a-string-in-a-windows-batch-file) – 2013-03-12 02:32:10
我老實說還沒有嘗試過任何東西;我一整天都在perl和AutoIt中編寫代碼,並且無法完全圍繞它。 不確定關於Powershell或它將如何整合...?肯:我看到了,但我不能使它適用於我的目標......試用! – 2013-03-12 02:38:14