質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

Q&A

解決済

1回答

4291閲覧

テキスト内の改ページコードを改行コードに、batファイルにより置換したい

hyoutan39

総合スコア1

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

0グッド

0クリップ

投稿2023/02/07 10:27

実現したいこと

テキスト内の改ページコードを改行コードに、batファイルによって置換したい

前提

あるシステムのデータファイル(datファイル)をtxtファイルに変換したのち、Excelに取り込もうとしていますが、そのまま貼り付けると
すべて、貼り付けた場所のセルに入り込んでしまい、適切に改行できませんでした。改行コードがなく改ページコードが挿入されていることがわかりました。そこで、改ページコード(FF)を改行コード(LF)置換するためのbatファイルを探していました。
tamoriさま、otnさまの次のページ
https://teratail.com/questions/219691
に掲載されているコードを発見したのですが、これは通常の文字の置換です。このコードを元に制御文字についての置換を行うコードを作成したいのですが、ご教示いただきたいです。

ソースコード内の次の行で、
set line=%line:auth_password=Pass!012%

auth_passwordを改ページコード、Pass!012を改行コードに書きかえるような方法だと思うのですが、具体的にどのように記述すればよろしいのでしょうか。

該当のソースコード

set INPUT_FILE=test.txt
set OUTPUT_FILE=test2.txt
for /f "delims=" %%a in (%INPUT_FILE%) do call :FOO "%%~a"
exit /b

:FOO
set line=%~1
set line=%line:auth_password=Pass!012%
echo %line% >> %OUTPUT_FILE%
exit /b

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

出来なくは無いと思ったのでやってみましたが、何故か CRLF じゃなくて LF になってしまいます。
ただ、Excelにペーストすると、改行コードがLFでも別の行になっているので、目的には大丈夫です。

FormFeed( 0x0C )を回答欄にコピペしても表示されないので、その部分は「ここにFFコードを入れる」と文字で書きましたので、その部分にCtrl-Lを打ち込めるエディターを使って入力しましょう。それが置換前文字列で、^で行末をエスケープして次の行の空行(改行コード)が置換後文字列です。

CMD

1@echo off 2setlocal enabledelayedexpansion 3(for /f "delims=" %%A in (infile.txt) do call :SUB "%%~A")>outfile.txt 4exit /b 5 6:SUB 7set "A=%~1" 8echo !A:ここにFFコードを入れる=^ 9 10! 11exit /b

ただ、ファイル中にバッチスクリプトの特殊文字があると正常に処理されないケースがあるかも知れませんので、記号がいろいろある場合は十分な確認が必要です。

おすすめとしては、バッチスクリプトでの変換を諦め、素直に、

そのまま貼り付けるとすべて、貼り付けた場所のセルに入り込んでしまい、適切に改行できませんでした。

を受け入れて、その後でExcelの関数やVBAで処理するのが安全です。
もちろんバッチスクリプトでを諦めた上で、VBScriptやPowerShellで変換しても良いのですが、Excelを使うならExcelでやるのが簡単です。

投稿2023/02/07 11:21

otn

総合スコア84553

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hyoutan39

2023/02/07 12:35

あまりに早いご回答いただき驚いています。 秀丸で「CL」というコードで改ページは表現されていたので、その文字を「ここにFFコードを入れる」に貼り付け、うまく動作しました。本当にありがとうございます。 EXCELで取り込みVBAでとのことですが、実は取り込むデータ量が多すぎて、1セルに貼り付けられる文字数を超過していて、できませんでした。PowerShellでできるといいなと思うのですが次のコードを作成しました。 $data = Get-Content .\infile.txt | ForEach-Object { $_ -replace FFコード,LFコード } $data | Out-File .\outfile.txt やはり、「FFコード,LFコード」の部分の具体的表現がわかりません。ご教示いただけるとありがたいのですが。
hyoutan39

2023/02/07 13:13

すいません。できました。FFコードの部分は、秀丸エディターのCL部分を貼り付け、LFはエンターキーで↓を表示することでうまく動作しました。ありがとうございました。 $data = Get-Content .\data.txt | ForEach-Object { $_ -replace ダブルコーションでFFコードを囲む,ダブルコーションでLFコードを囲む } $data | Out-File .\data-.txt
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問