例如,我有一个线如何更换一个字符换行分隔符使用批处理文件
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