2014-10-10 72 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