2014-10-10 68 views
0

例如,我有一個線如何更換一個字符換行分隔符使用批處理文件

2054721111*2054721111*2054721111*2054721111 

現在,我要替換「*」字符作爲新行。

如果我想讓我的輸出像這樣使用批處理文件怎麼辦?

2054721111* 
2054721111* 
2054721111* 
2054721111 
+0

給予崇高的文本3一試。您可以在每個分隔符處使用獲取多個遊標,然後分離爲多行或重新加入它們。如果現有功能不是您需要的,您可以創建自己的插件。 – 2014-10-10 06:52:15

+0

@Chris Barlow 對不起,但我知道你的意思:)我是新的批處理編程。 – PeterS 2014-10-10 06:54:45

+0

btw我想在批處理文件中實現這一點,而不使用任何插件。可能嗎? – PeterS 2014-10-10 06:55:59

回答

1
@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,輸出所述第一令牌使用*作爲分隔符並保存線作爲輸入變量的其餘部分。繼續處理,直到所有的令牌都被回顯。

的代碼第一塊不會有數據(在情況下,他們可能存在)驚呼任何問題,但第二個可能失敗

+0

如果我想要轉換文件,該怎麼辦?例如,我有一個文件file.txt包含「2054721111 * 2054721111 * 2054721111 * 2054721111」,我想用換行符替換? – PeterS 2014-10-10 11:43:02

+0

@PeterS,請參閱[這裏](http://stackoverflow.com/a/16735079/2861476)。 dbenhan寫了一個很好的批處理文件來做這種操作。你只需要使用'type inputfile.txt | repl.bat「\ *」「* \ n」X> outputfile.txt「 – 2014-10-10 11:51:21

+0

謝謝你,我現在就開始工作了。最後一個問題。例如,我有一個文件中的字符列表,我希望這些字符被替換爲一個文件。 例如我有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

0

用記事本++,只要做到這一點:

按Ctrl-F,選擇再選擇更換標籤:

查找內容:\n

社區法網上Replace all\*
與更換。

+0

我試圖在批處理文件中實現這個 – PeterS 2014-10-10 07:04:44

+0

@彼得斯:對不起,我見過Notepad ++標記,然後我給了這個答案。 – Toto 2014-10-10 07:07:59

+0

它沒問題:) – PeterS 2014-10-10 07:09:00

相關問題