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,由于您的问题与我回答的不同,您需要这样做。请注意,如果您这样做,我们希望您包含一部分代码,(编写此代码是为了实际执行您所需的任务),在您的问题中,填写输入文件内容和所需输出的示例。可以。我应该在帖子中标记您吗?编辑:您实际上可以回答我打开的现有问题-