用于删除字符串并将新字符串附加到文本文件的批处理文件

时间:2017-04-20 10:08:50

标签: batch-file cmd

我一直在尝试通过创建批处理脚本来自动编辑webpack的index.ts文件,如下所示:

ren index.html index.txt

findstr /v 'inline.bundle.js /html' index.txt > index.html

del index.txt

@echo '<script type="text/javascript" src="main.bundle.js"></script></body></html>' >> index.html

但是,运行批处理文件将产生此输出:

PS C:\Users\x> .\batch.bat

C:\Users\x>ren index.html index.txt

C:\Users\x>findstr /v 'inline.bundle.js /html' index.txt  1>index.html
FINDSTR: Cannot open /html'

C:\Users\x>del index.txt
< was unexpected at this time.

C:\Users\x>@echo '<script type="text/javascript" src="main.bundle.js"></script></body></html>' >> index.html

PS C:\Users\x>

请注意,cmd添加了&#39; 1&#39;到&#39;&gt;&#39;第2行中的字符,以及&#39;&lt;&#39;在第3行之后没有任何理由输入字符。我已检查过编码及其ANSI,因此它不是编码问题。

此外,将这些行逐个粘贴到cmd或PowerShell中可以很好地完成工作。运行批处理文件时出现问题。有什么想法吗?

修改

以下是我文件的最后两行:(换行符猜测无法通过评论确定)

<script type="text/javascript" src="inline.bundle.js"></script><script type="text/javascript" src="scripts.bundle.js"></script><script type="text/javascript" src="vendor.bundle.js"></script><script type="text/javascript" src="main.bundle.js"></script></body>
</html>

我希望它只保留with main.bundle.js,但由于findstr / v(显然)只能按行工作,我已采用上述解决方法删除最后两行并附加正确的回来了。

2 个答案:

答案 0 :(得分:0)

试试这个:

n

答案 1 :(得分:0)

这里有两个问题。首先,cmd认为`/ html'是要搜索的文件名。在搜索字符串周围使用QUOTATION MARK。

其次,findstr将搜索多个字符串,除非您使用/C:

findstr /v /C:"inline.bundle.js /html" index.txt > index.html

对于echo行,它也可以使用QUOTATION MARK,但这会将QUOTATION MARK字符放入输出中。为避免这种情况,需要转义重定向符号。

@echo ^<script type="text/javascript" src="main.bundle.js"^>^</script^>^</body^>^</html^> >index.html