2017-12-27 60 views
2

텍스트 파일에서 줄 바꿈을 제거하는 방법, 나는 그것이 내용배치 또는 기본적으로 PowerShell을

 
apple banana carrot 
을 수 있도록 내용

 
apple 
banana 
carrot 

와 file.txt를 읽고 NEWFILE.TXT에 기록 할

설치 권한이없는 Windows 컴퓨터에서이 작업을 수행해야합니다.

나는
set row= 
for /f %%x in (file.txt) do set row=%row% %%x 
echo row > newfile.txt 

을 시도하고 나는 (내가 PowerShell 스크립트를 실행할 수 없습니다) 대신 CMD 스타일 for 루프의 PowerShell을 문을 사용했습니다.

powershell -Command "(Gc file.txt) | Foreach-Object -Process {set row=%row% _$} | Out-File newFile.txt" 

그러나 둘 다 빈 파일을 생성합니다. 이렇게하는 방법이 있습니까?

:
+0

글쎄, 행을 빈 값으로 설정하고'%% x '를'row' (행을 비워 둡니다)에 할당하지 말고 파일에 빈 행을 씁니다. 'for %% x in'은 무엇을 의미한다고 생각하십니까? –

+0

'findstr/v "^ $"File1.txt> File2.txt' – ACatInLove

+0

파일의 각 줄이라고 생각했습니다. – coderE1

답변

3

Get-Content

그래서 당신은 (PowerShell에서) 오직 할 필요가있는 라인에 가입하고 파일에 결과를 다시 작성하는 것입니다, 이미 제거 나누기 라인과 라인의 배열로 파일의 내용을 반환

하지

(Get-Content 'input.txt') -join ' ' | Set-Content 'output.txt' 
권장하지만, 당신이 배치에서이 작업을 수행해야하는 경우는 다음과 같이해야합니다 : 확장 requi입니다 지연

@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을 참조하십시오.

+1

배치 솔루션은 텍스트 파일 크기가 8192 미만인 경우에만 작동합니다. [환경 변수는 최대로 제한됩니다. 8191 자] (https://support.microsoft.com/en-us/help/830473/command-prompt-cmd--exe-command-line-string-limitation). – zett42

0

Ansgar Wiechers' helpful answer 보완 하려면 다음과 같이 배치 파일에서 다음 명령을 실행

/A cmd.exe 콘솔 창 당신이 원하는 일을해야합니다

powershell -command "\"$(Get-Content file.txt)\" > newFile.txt" 
  • 주를 포함 "의 이스케이프로 \", 외부에서 호출 할 때 PowerShell에서 필요합니다. (대조적으로 Power Shell- 내부적으로, `은 이스케이프 문자입니다. 라인의 배열 출력 - -

  • Get-Content file.txt 호 둘러싸 표현식 연산자$(...)를 사용하여 따옴표 문자열하여, 배열 요소 암시 공백 각각과 결합되는 것을 의미한다.

단, PowerShell에서의 출력 재 지정 연산자, >은 UTF16-LE ("유니 코드") 기본적으로 인코딩 된 파일이 생성 Out-File (적어도 에서 윈도우 PowerShell을처럼 것을, 크로스 플랫폼을 PowerShell 코어의 기본값은 (BOM 없음) UTF-8입니다. Set-Content - 문자열이 출력되는 것을 알고 - 출력 인코딩을 제어하기

, 당신은 바람직 Out-File 적용 또는 수 -Encoding 파라미터를 사용한다. Windows PowerShell을에서

는 참고 Set-Content - 기존 "ANSI"코드 페이지, 일반적으로 윈도우 1252에 의해 암시 인코딩 기본값 - >/Out-File과는 대조적이다.