本质上,我想从 file.txt 中读取内容
apple banana carrot
and write to newfile.txt so that it will have contents
apple banana carrot
I need to do this on a Windows computer on which I do not have install permissions.
I tried
set row=
for /f %%x in (file.txt) do set row=%row% %%x
echo row > newfile.txt
我尝试使用 PowerShell 语句(我无法运行 PowerShell 脚本)而不是 CMD 样式
for
环形。powershell -Command "(Gc file.txt) | Foreach-Object -Process {set row=%row% _$} | Out-File newFile.txt"
但两者都会产生一个空文件。
有没有办法做到这一点?
最佳答案
Get-Content
将文件的内容作为已删除换行符的行数组返回,因此您需要做的(在 PowerShell 中)就是连接这些行并将结果写回文件:
(Get-Content 'input.txt') -join ' ' | Set-Content 'output.txt'
不推荐,但如果您必须批量执行此操作,则需要这样的操作:
@echo off
setlocal EnableDelayedExpansion
set row=
for /f %%x in (file.txt) do set "row=!row! %%x"
>newfile.txt echo %row%
请注意,此操作需要延迟扩展。没有它
%row%
循环体中的 将在解析时扩展(当变量仍为空时),因此在循环完成后,您将只获得变量中输入文件的最后一行。启用延迟扩展(并使用 !row!
而不是 %row%
)变量在运行时扩展,即在循环迭代期间,正如人们通常所期望的那样。有关延迟扩展的更多信息,请参阅 Raymond Chen's blog .
关于string - 如何使用批处理或 PowerShell 从文本文件中删除换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47999562/