2017-04-20 133 views
0

我一直在试图自动化的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在2号线增加了一个“1”到“>”字符和“<”字符输入被无故线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> 

我希望它仅保留main.bundle.js,但由于findstr/v(显然)只适用于每行,所以我采取了上述解决方法,删除最后两行并追加正确的字符串。

+2

您是否尝试过在正在搜索的字符串周围使用引号而不是APOSTROPHE? “vs.' – lit

+0

如果您向我们提供合理的输入文件片段,可能会有所帮助,因为乍一看,您的实际任务可能仅仅是替换任何'src =”inline.bundle.js实例“''''src =”main.bundle.js“'这可能会发生,无论是否关闭”“或甚至是''标签都在该行 – Compo

+0

@Compo是啊我真的应该做到这一点,无论如何,它是: ' ' 这是最后两行代码。我希望它只用'main.bundle.js'保留'

0

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

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

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

对于echo线,它也可以使用引号,但是这将会把引号字符转换成输出。为了避免这种情况,重定向符号将需要被转义。

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

与'echo'行相同的问题(以及相同的解决方案)。 – Stephan

+0

@Stephan - 谢谢。我将编辑该问题。 – lit

相关问题