例如,我有一個線如何更換一個字符換行分隔符使用批處理文件
2054721111*2054721111*2054721111*2054721111
現在,我要替換「*」字符作爲新行。
如果我想讓我的輸出像這樣使用批處理文件怎麼辦?
2054721111*
2054721111*
2054721111*
2054721111
例如,我有一個線如何更換一個字符換行分隔符使用批處理文件
2054721111*2054721111*2054721111*2054721111
現在,我要替換「*」字符作爲新行。
如果我想讓我的輸出像這樣使用批處理文件怎麼辦?
2054721111*
2054721111*
2054721111*
2054721111
@echo off
setlocal
set "data=2054721111*2054721111*2054721111*2054721111"
Rem Option 1 - first count how many elements there are in the string
Rem and then loop over them
setlocal enableextensions disabledelayedexpansion
for /f %%n in (
'cmd /q /u /c "echo(%data%"^|find /c "*"'
) do for /l %%i in (0 1 %%n) do (
setlocal enabledelayedexpansion
for /f "tokens=1,* delims=*" %%a in ("!data!") do (
endlocal
set "data=%%b"
if defined data (echo(%%a*) else (echo(%%a)
)
)
endlocal
Rem Option 2 - without counting the number of elements
setlocal enableextensions disabledelayedexpansion
cmd /q /v:on /e:on /c "for /l %%l in() do if not defined data (exit) else for /f "tokens=1,* delims=*" %%a in ("!data!") do (set "data=%%b" & if defined data (echo %%a*) else echo %%a)"
endlocal
兩個代碼表現出同樣的想法:在一個循環for /f
,輸出所述第一令牌使用*
作爲分隔符並保存線作爲輸入變量的其餘部分。繼續處理,直到所有的令牌都被回顯。
的代碼第一塊不會有數據(在情況下,他們可能存在)驚呼任何問題,但第二個可能失敗
如果我想要轉換文件,該怎麼辦?例如,我有一個文件file.txt包含「2054721111 * 2054721111 * 2054721111 * 2054721111」,我想用換行符替換? – PeterS 2014-10-10 11:43:02
@PeterS,請參閱[這裏](http://stackoverflow.com/a/16735079/2861476)。 dbenhan寫了一個很好的批處理文件來做這種操作。你只需要使用'type inputfile.txt | repl.bat「\ *」「* \ n」X> outputfile.txt「 – 2014-10-10 11:51:21
謝謝你,我現在就開始工作了。最後一個問題。例如,我有一個文件中的字符列表,我希望這些字符被替換爲一個文件。 例如我有delimeter.txt文件,其中包含 * ! ^ 如果我想在文件中找到這些分隔符並用* \ n,!\ n和^ \ n替換該怎麼辦?(delimeter.txt)do( )類型c:\ aaa \ %% a | repl.bat「\ %% s」 我已經有了這樣的代碼。 「%% s \ n」X> c:\ aaa \ %% a' 但它只能讀取最後一個字符 – PeterS 2014-10-10 12:56:03
給予崇高的文本3一試。您可以在每個分隔符處使用獲取多個遊標,然後分離爲多行或重新加入它們。如果現有功能不是您需要的,您可以創建自己的插件。 – 2014-10-10 06:52:15
@Chris Barlow 對不起,但我知道你的意思:)我是新的批處理編程。 – PeterS 2014-10-10 06:54:45
btw我想在批處理文件中實現這一點,而不使用任何插件。可能嗎? – PeterS 2014-10-10 06:55:59