在Windows批处理中为文件的每一行添加和附加文本

时间:2016-06-16 17:19:25

标签: windows batch-file cmd

我查看了大量的问题,所有问题都提出相同的代码,我不知道为什么它对我不起作用。我尝试使用.bat命令在.txt文件的每一行前添加和附加文本。我的代码目前是

@echo off
for /f "tokens=* delims= " %%a in (patchList.txt) do (
echo copy %%a>>output.txt
)

但是在运行它时根本没有任何事情发生。即使我试图通过摆脱输出参数输出到屏幕,也没有任何反应。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您的patchList.txt是以Unicode编码创建/保存的。

如果type patchList.txt提供可读输出,则该文件包含Byte Order Mark,您可以按如下方式调整脚本:

@echo off
for /f "tokens=*" %%a in ('type patchList.txt') do (
    >>output.txt echo copy %%a
)

如果type patchList.txt通过空白或白色方块或其他{{文本间隔 1}}替换字符然后该文件不包含BOM;然后Powershell可以提供帮助:

@echo off
for /f "usebackq tokens=*" %%a in (`
        powershell -Command Get-Content '%CD%\patchList.txt' -Encoding Unicode
                                 `) do (
    >>output.txt echo copy %%a
)

或者,更好,切换到powershell
如果由于某种原因powershell不可接受,那么我们可以使用可以读取Unicode文件的find命令:尝试

< patchList.txt find "."

注意 上面的"."(句号)不是类似正则表达式的模式,也不是通配符,因此可能难以确定所有行匹配角色。

相关问题