Q
在批處理腳本
2
A
回答
3
@ECHO OFF
SETLOCAL
SET mystring=*10.31.*2.*65
:deaster
FOR /f "tokens=1* delims=*" %%i IN ("%mystring%") DO (
SET mystring=%%j
IF DEFINED mystring (
SET mystring=%%i%%j
GOTO deaster
) ELSE (
SET mystring=%%i
)
)
ECHO result=%mystring%=
0
調查sed,流編輯器。如果你在Windows上(假設你是),你可以在網上找到預編譯的二進制文件。
echo "*10.31.*2.*65" | sed 's/\*//g'
1
您不需要爲此完整的腳本。您只需要一個for /f
循環。
C:\Users\rojo>set test=*10.*31.**2.*65
C:\Users\rojo>echo %test%
*10.*31.**2.*65
C:\Users\rojo>for /f "tokens=1-4 delims=.^*" %I in ("%test%") do @set test=%I.%J.%K.%L
C:\Users\rojo>echo %test%
10.31.2.65
如果你想把for
環成一個批處理腳本,使用%%I
,%%J
,%%K
和%%L
,而不是單一的百分比。
7
您可以將移除過程簡化爲一行。例如,如果我有像這樣的字符串:
set string=hello!
我想刪除「!」在裏面,我可以做
set string=%string:!=%
該字符串現在將值改爲"hello"
的"hello!"
編輯:作爲jeb pointed out in the comments,你可以使用這種方法不能取代"*"
。這是因爲*
是批處理文件模式匹配的通配符(對其的精彩解釋here)。在發佈這個答案時我不知道這一點,因爲我認爲這個替換方法適用於所有輸入字符串。如果您特別需要更換*
,我建議您遵循magoo's answer。否則,我會爲那些需要一般的,簡短的單線解決方案來批量字符串替換的人解決這個問題。
相關問題
- 1. 在批處理腳本之間顯示的批處理腳本
- 2. 批處理腳本
- 3. 批處理腳本
- 4. 批處理腳本
- 5. 在Windows批處理腳本
- 6. 在Windows批處理腳本
- 7. 在批處理腳本
- 8. Windows批處理腳本 - 在
- 9. 在Windows批處理腳本
- 10. 如何在批處理腳本中運行powershell腳本和批處理腳本?
- 11. 批處理腳本編輯另一批處理腳本
- 12. 批處理腳本後停止向其他批處理腳本
- 13. 如何從批處理腳本中運行批處理腳本?
- 14. 從另一個批處理腳本調用批處理腳本
- 15. 交錯批處理腳本處理
- 16. 批處理腳本來處理文件
- 17. 集循環在我的批處理腳本打開批處理文件腳本
- 18. SQLCMD批處理腳本
- 19. xcopy的批處理腳本
- 20. 批處理腳本問題
- 21. 批處理腳本Optmization
- 22. 視窗批處理腳本
- 23. 用CMD /批處理腳本
- 24. 批處理腳本「FOR/F ......」
- 25. 批處理腳本問題
- 26. 批處理腳本SET/P
- 27. FFmpeg的批處理腳本
- 28. 批處理腳本比較
- 29. 批處理文件腳本
- 30. 批處理腳本問題
這不是qeustion的答案,因爲您無法用此方法替換'*'。作爲替換表達式的開始'*'具有特殊含義。 – jeb 2016-06-15 15:49:18
從1.2.3.4到1,2,3,4的轉換setlocal set string = 1.2.3.4 set string =%string:。=,% – Justin 2016-07-20 06:35:27