string - 如何使用批处理或 PowerShell 从文本文件中删除换行符

标签 string powershell batch-file file-io cmd

本质上,我想从 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/

相关文章:

javascript - 如何为正则表达式添加条件?

java - 在将字符插入字符串时创建循环?

ios - String 仅返回 splitBy 之后的数字

powershell - 使用带有 "&"和 "%"的变量时出现引号问题

powershell - 在 Powershell 中为批处理文件设置变量

Javascript String.fromCharCode 区分大小写吗?

powershell - 如何添加在 Visual Studio 2013 脚手架中使用的新脚手架?

mysql - 如何使用 PowerShell 2.0 在循环中运行带参数的不同 MySql 语句?

c++ - 程序不能写文件

windows - 用读取文本文件的for循环替换多行批处理文件