【发布时间】:2010-09-19 21:20:27
【问题描述】:
我正在使用 Windows 命令编写一个批处理文件脚本,并且想用“,”更改每次出现的一些空格,最简单的方法是什么?
【问题讨论】:
我正在使用 Windows 命令编写一个批处理文件脚本,并且想用“,”更改每次出现的一些空格,最简单的方法是什么?
【问题讨论】:
如果您的用户是文本文件中一行的单词列表,以空格分隔,例如:
one two three four
创建一个批处理文件SpaceToComma.bat,如下:
@echo off
setlocal
for /F "tokens=* delims= " %%a in (%1) do @set data=%%a
echo %data: =,%
endlocal
然后运行它,你会得到用逗号分隔的单词。这是你想要的吗?
C:\>SpaceToComma.bat data.txt
one,two,three,four
如果你有一个多行文件,那么就可以了:
数据.txt
one two three four
five six seven
SpaceToComma.bat
@echo off
setlocal
for /F "tokens=* delims= " %%a in (%1) do @call :processaline %%a
endlocal
goto :eof
:processaline
setlocal
set data=%*
echo %data: =,%
endlocal
goto:eof
输出
C:\>SpaceToComma.bat data.txt
one,two,three,four
five,six,seven
(在没有子例程的情况下可能有一个聪明的方法,使用 !data! 语法进行延迟变量扩展,但我无法使用替换语法。)
如果这不是您想要的,请解释一下,我可以尽力帮助。
(PS:我喜欢在人们坚持无法完成的情况下使用批处理文件。)
【讨论】:
您可以从http://unxutils.sourceforge.net/ 下载 sed.exe 并运行以下命令:
sed -e "s/ /,/" infile.txt >outfile.txt
【讨论】:
这在很大程度上取决于您如何获取数据,但您可以使用 For-Do 构造来解决问题。将字段分隔符设为空格,然后在每个标记之间用 , 将字符串重新构建到 do 中。我可以建议一种更强大的脚本语言吗?您应该在几乎任何相对现代的 Windows 弓上安装 VBScript。
【讨论】: