Batch file 使用批处理文件替换字符(SED的替代方案)
我想通过批处理将文本文件中的所有Batch file 使用批处理文件替换字符(SED的替代方案),batch-file,replace,notepad,Batch File,Replace,Notepad,我想通过批处理将文本文件中的所有,替换为 实际上,我只需要这个命令的一个替代项 sed.exe "s/,/./g" $clearances.txt$ > $clearance_out.txt$ 问题是,我想在每台电脑上使用sed.exe,但它并没有安装在每台电脑上,所以我计划从Windows阅读并替换为标准记事本编辑器 有人知道怎么做吗 clearances.txt的示例: -12,7 -5,6 -7,6 -3,9 您可以通过以下方式完成(使用等效于sed的批处理文件): 命名文件re
,
替换为
实际上,我只需要这个命令的一个替代项
sed.exe "s/,/./g" $clearances.txt$ > $clearance_out.txt$
问题是,我想在每台电脑上使用sed.exe,但它并没有安装在每台电脑上,所以我计划从Windows阅读并替换为标准记事本编辑器
有人知道怎么做吗
clearances.txt的示例:
-12,7
-5,6
-7,6
-3,9
您可以通过以下方式完成(使用等效于sed的批处理文件): 命名文件
replace_string.bat
@echo off
setlocal enableextensions disabledelayedexpansion
set "search=,"
set "replace=."
set "textFile=clearances.txt"
for /f "delims=" %%i in ('type "%textFile%" ^& break ^> "%textFile%" ') do (
set "line=%%i"
setlocal enabledelayedexpansion
>>"%textFile%" echo(!line:%search%=%replace%!
endlocal
)
首先,我们要确保禁用延迟扩展(使for
魔术能够工作)。接下来设置要在文件中搜索和的变量
然后在循环中,我使用type
来显示文件的内容。然后使用^
来转义&(先运行第一个命令,然后运行第二个命令)
和
(重定向)
然后将循环变量%%i
(由于我们在批处理文件中,所以存在双%%
)保存到行
变量中,以便我们可以使用它。然后我们需要启用delayedexpansion
,这样我们就可以使用代码>
棘手的部分是回声(!行:%search%=%replace%!
)
echo(
通常打印空行。在这里,您需要将其用于行
变量扩展。如果没有它,您将得到如下结果:
“line:”未被识别为内部或外部命令
因此,我们现在的位置(由于扩展)
12,7:,=。
最终结果12.7
您可以使用PowerShell
而不是sed
从批处理文件:
@PowerShell”(GC.\clearances.txt)|%{$\uu-Replace','..}| SC.\clearances.txt”
在命令提示下
PowerShell“(GC.\clearances.txt)|%{$_-Replace',','.}| SC.\clearances.txt”
批处理文件无法与图形用户界面交互。可能是omg的副本。它太复杂了。百万年后我再也不会愿意学习批处理了。我想哈哈。但它很有效,非常感谢!@Mark我很高兴它能为你工作。它一开始看起来很复杂。这很容易,一些真正疯狂的事情已经完成了由dbenham-。我建议不要将批处理文件命名为replace
,因为还有一个命令使用该名称…这也很好。实际上,它对我最初的要求有了更进一步的帮助,因为这样我也可以打开其他文件类型。谢谢你,是否有能力使用该命令来定位批处理文件中记录的第一个字符文件?我对PowerShell和批处理文件非常熟悉。@Plakton,由于您的问题与我回答的不同,您需要这样做。请注意,如果您这样做,我们希望您包含一部分代码,(编写此代码是为了实际执行您所需的任务),在您的问题中,填写输入文件内容和所需输出的示例。可以。我应该在帖子中标记您吗?编辑:您实际上可以回答我打开的现有问题-