単純なcmdコマンドで.txt
ファイルから改行を削除するにはどうすればよいですか?
これはファイルを消去します:
findstr "{\r\n}" %USERPROFILE%\Desktop\tt\t.txt %USERPROFILE%\Desktop\tt\t.txt > t.txt
これは役に立たない情報を追加しますが:
findstr "." %USERPROFILE%\Desktop\tt\t.txt %USERPROFILE%\Desktop\tt\t.txt > t.txt
入力ファイルを2回指定しているため、データが2倍になります。
空の行を削除することが目的である場合、正しいコマンドから遠くありませんでした。
findstr "." "%USERPROFILE%\Desktop\tt\t.txt" > t.txt
現在のフォルダーが%USERPROFILE%\Desktop\tt
でないことを確認してください。そうしないと、入力ファイルが上書きされます。あるいは、出力ファイルのフルパスを指定することもできます。
次の投稿も役立つかもしれません:
バッチまたはPowerShellを使用してテキストファイルから改行を削除する方法 。
すべての改行を完全に削除するために、次のスクリプトを使用しました。
@echo off
setlocal EnableDelayedExpansion
set row=
for /f %%x in (test.txt) do set "row=!row!%%x"
echo %row% >newfile.txt
echo %row%
上記のスクリプトの実行方法は次のとおりです。
あなたができることの一つは、そこにいくつかのunix/linux/* nixコマンドを取得することです。そして、インターネット上のすべての例で、標準の 'tr'コマンドを使用します。 tr -d '\r\n' < input.txt > output.txt
は、\ r文字、\ n文字、および任意の\ r\nシーケンス(または、任意の\ n\rシーケンスを削除しますが、そのようなものはありません)。 Cygwinにはいくつかのコマンドがあります。 xxdコマンドも、ファイルの内容を確認するのに適しています。 Cygwinにはそれが含まれています。
答えはfindstrを使用することが可能であることを示しているので、それは大丈夫です..しかし、私がcmd.exeの「for」コマンドを見て本当に混乱する何かをしなければならない場合、私はおそらく* nixスタイルのコマンドを探します「for」よりも簡単なものがある、例えば'tr'!
注-一部コメント作成者のItWasn'tMeは、cygwinシェル以外のcmd.exeでcygwinコマンドを使用できることを認識していませんが、使用できます。それにもかかわらず、OPはネイティブソリューションを探していることを示唆するコメントをしましたが、OPはそれを彼の質問に入れるべきでした。
FOR /F "tokens=*" %i IN (t.txt) DO @echo|set /p="%i" >> t2.txt
FOR /F "tokens=*" %i IN (t.txt) ..
はtxtファイルを1行ずつ処理します。%i
は行全体です。@echo|set /p="%i"
は、改行なしで行をエコーします( source )。>> t2.txt
は、すべての出力を新しいファイルにコピーします(OPが要求したように、すべての改行文字が削除されているため、すべての行が1つの行に効果的に連結されます)。結果:
C:\Users\me\Documents>type t.txt
some line
SOME OTHER LINE
>
lolwut
Some Person
SOMEBUSINESS
SomeBusiness after an empty line
Users
Line with "quotes"
Wow look at this weird characters ÎøÎñÎ[{()}]ÖοÎö neat!
C:\Users\me\Documents>FOR /F "tokens=*" %i in (t.txt) do @echo|set /p="%i" >> t2.txt
C:\Users\me\Documents>type t2.txt
some lineSOME OTHER LINE>lolwutSome PersonSOMEBUSINESSSomeBusiness after an empty lineUsersLine with "quotes"Wow look at this weird characters ÎøÎñÎ[{()}]ÖοÎö neat!
C:\Users\me\Documents>
出力ファイルを入力ファイルと同じにする必要がある場合は、move
(またはcopy
またはtype >
or ...)t2.txt
over t.txt
。これが単一の.cmd
ファイルでどのように見えるかの例:
@ECHO OFF
FOR /F "tokens=*" %i IN (t.txt) DO @echo|set /p="%i" >> t2.txt
MOVE /Y t2.txt t.txt
((Get-Content ${Env:USERPROFILE}'\Desktop\tt\t.txt' -Raw) -replace "(?m)^\s*`r`n",'').trim() | Set-Content .\t.txt
- これは役に立たない情報を追加します:
findstr "." %USERPROFILE%\Desktop\tt\t.txt
%USERPROFILE%\Desktop\tt\t.txt
> t.txt
実際、上記のコマンドでこの作業を実行できますが、これは機能しないと考えています。また、user name
スペースがある( "複合名" == "エリシャ・ハビンスキー" )
findstr "." c:\Users\Elisha Habinsky\Desktop\tt\t.txt c:\Users\Elisha Habinsky\Desktop\tt\t.txt
1)"%USERPROFILE%\Desktop\tt\t.txt"
および %USERPROFILE%\Desktop\tt\t.txt"
> t.txt
2)regex
:
で引用符を使用する必要はありません"
.
"
3)これは.
は任意の文字、またスペースを意味します、タブ。
4)ファイルにタブのみの行がある場合空白行は100%空白ではないため、これらの行もファイル出力に保存されます!
5)t.tmp
ファイルを使用してこのジョブを実行することを検討してください。
6)ここで最後の行のコードでバットのコードを使用することをお勧めします。これらの行をコピーしてfile.cmd
として保存します。 batは、空白の行かどうかに関係なく、すべてのタブを削除します。
>.\t.txt findstr . "%USERPROFILE%\Desktop\tt\t.txt"
rem :: or ::
findstr . "%USERPROFILE%\Desktop\tt\t.txt" >.\t.txt
タブしかない行の場合:
- コマンドラインの場合(1行):
for /f "delims= " %T in ('robocopy /L . . /njh /njs')do set "_tab=%T" && findstr . .\t.txt >"%temp%\t.tmp" && >.\t.txt (for /f tokens^=* %i in ('type "%temp%\t.tmp"^|find /v "%_tab%"')do @echo/%i) && del /q "%temp%\t.tmp"
- バッチ/ cmdファイルの場合:
@echo off && SetLocal EnableDelayedExpansion
for /f "delims= " %%T in ('robocopy /L . . /njh /njs')do set "_tab=%%T"
findstr . "%USERPROFILE%\Desktop\tt\t.txt" >"%temp%\t.tmp"
>.\t.txt (for /f tokens^=* %%i in ('type "%temp%\t.tmp"
')do set "_line=%%~i"&& cmd /v/c echo/!_line:%_tab%=!
) && >nul del /q "%temp%\t.tmp" && endlocal
.\t.txt && exit /b || goto :eof
英語