2017-01-17 6 views
1

通常の.txtドキュメントを完全に垂直なものに変換するバッチファイルスクリプトを作成しようとしています。すべての文字の後に新しい行を挿入する[バッチファイル]

から:

This is a test document, 
it is displaying characters on the same line. 

へ:たとえば

T 
h 
i 
s 

i 
s 

a 

t 
e 
s 
t 

d 
o 
c 
u 
m 
e 
n 
t 
, 

i 
t 

i 
s 

d 
i 
s 
p 
l 
a 
y 
i 
n 
g 

c 
h 
a 
r 
c 
t 
e 
r 
s 

o 
n 

t 
h 
e 

s 
a 
m 
e 

l 
i 
n 
e 
. 
+0

このサイトでは、無料の脚本ではありませんサービス!あなた自身の最初にそれを試してみてください、ここに戻ってきて、あなたの努力を分かち合い、あなたの問題点を明確に記述してください!少なくとも[ツアー]を読んでここで学んでください! – aschipfl

答えて

5

多分これはcompletlyニーズに合わせませんが、出発点として、あなたが試すことができます

cmd /u /c"type normal.txt" | find /v "" > vertical.txt 

これにより、ユニコード出力を持つcmdインスタンスが起動します。この場合、normal.txtファイルは標準出力に送信されます。 cmdインスタンスからのすべての出力は、ヌル文字(Unicode出力は文字シーケンスごとに2バイト、そのうちの1つがヌルまたは0x00 ASCII)を表示するようにfindコマンドにパイプされ、行終了記号として出力されます。各文字。すべてのデータが出力ファイルにリダイレクトされます。

1

次のスクリプトは、MC NDanswerに基づいており、また、元のファイルで発生する改行の代わりに追加の改行を回避している。

@echo off 
setlocal EnableExtensions DisableDelayedExpansion 

set "SPACE= " 
set "FLAG=#" 
for /F delims^=^ eol^= %%C in (' 
    cmd /U /C type "%~dpn0.txt" ^| find /N /V "" 
') do (
    set "CHAR=%%C" 
    setlocal EnableDelayedExpansion 
    set "CHAR=!CHAR:*]=!" 
    if defined CHAR (
     echo(!CHAR! 
     endlocal 
     set "FLAG=#" 
    ) else (
     if defined FLAG (
      echo(%SPACE% 
      endlocal 
      set "FLAG=" 
     ) else endlocal 
    ) 
) 

endlocal 
exit /B 
関連する問題