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

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

新規登録して質問してみよう
ただいま回答率
85.49%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

バッチファイル

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

置換

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

Q&A

0回答

648閲覧

cmdまたはpowershellで別ファイルを参照してテキスト内容を変換する方法

natuyasumi

総合スコア7

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

バッチファイル

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

置換

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

0グッド

0クリップ

投稿2020/01/16 23:46

編集2020/01/17 01:40

【cmdまたはpowershellで別ファイルを参照してテキスト内容を変換する方法】

<Aファイルサンプル>
Map From test
Position (0.0520833,0.0520833) Units "in"
Width 7.82292 Units "in" Height 4.5 Units "in"
Set Window FrontWindow() ScrollBars On Autoscroll On Enhanced On Smooth Text Antialias Image High Vector Antialias
Set Map
CoordSys Earth Projection 8, 33, "m", 142.25, 44, 0.9999, 0, 0
Center (-34733.04786,-103594.5005)
Zoom 1385.090814 Units "m"
Preserve Zoom Display Zoom
Distance Units "m" Area Units "sq m" XY Units "m"
Distance Type Cartesian
Set Map
Layer 1
Display Global
Global Pen (12,2,255) Brush (1,16777215,16777215) Symbol (35,16776960,20) Line (25,65,16711680) Font ("MS Pゴシック",0,10,0)
Label Line Simple Position Center Font ("MS Pゴシック",0,10,0) Pen (1,2,0)
With
Parallel On Auto On Overlap Off Duplicates On Offset 2
Visibility On
Object 1 Line Simple Anchor
Object 24 Line Simple Anchor
Object 15 Line Simple Anchor
Object 9 Anchor

Set Map
Layer 2
Display Global
Global Pen (12,2,255) Brush (1,16777215,16777215) Symbol (35,16776960,20) Line (25,65,16711680) Font ("MS Pゴシック",0,10,0)
Label Line Simple Position Center Font ("MS Pゴシック",0,10,0) Pen (1,2,0)
With
Parallel On Auto On Overlap Off Duplicates On Offset 2
Visibility On
Object 1 Line Simple Anchor
Object 24 Line Simple Anchor
Object 15 Line Simple Anchor
Object 29 Anchor
Object 30 Anchor

Set Window FrontWindow() Printer
Name "iR-ADV C5550" Orientation Portrait Copies 1
Papersize 9


<やりたいこと>
ファイル内の
"Object半角スペース任意の整数半角スペース"
の行を他のファイルを参照して変換することです。

経緯としては、Layer1データを初期化(他アプリで)すると、
Objectの番号が参照ファイルのように変更されてしまいます。
但し、AファイルのObjectの番号は手動で変更しなければならないので
何かいい方法はないかと悩んでいるところでした。

<Aファイルの主な仕様>
1.以下のような階層構造になっている
階層は不定で、
SetMap
Layer1
Layey2
SetMap
Layer1
といったケースもあります。
"SetMap""Layer"のキーワードは固定です。

2.置換対象は固定で"Object半角スペース任意の整数半角スペース"です。
Objectが置換対象外に記載される事はありません。
大文字小文字区別なし、ダブルクォーテーション考慮なしでいいかと。

<置換内容を記載した参照ファイル(csv)の仕様について>
Layer1,object 1,object 1
Layer1,object 24,object 2
Layer1,object 15,object 3
Layer1,object 9,object 4
といったファイルを用意します。
※変更は可能

Aと参照ファイルを掛け合わせるとAのObjectの数字部分が参照ファイルの内容に書き換わるといった内容です。

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

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

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

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

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

Zuishin

2020/01/17 00:00

このように置換する方法はたくさんありますが、それが実際のファイルに使えるかどうかは実際のファイルの詳細な仕様がわからなければわかりません。
natuyasumi

2020/01/17 00:08

テキストファイルの内容はA、Bの内容が複数行あるだけで、仕様もとくにありません。 記載している以外の内容はなしと考えて下さい。
Zuishin

2020/01/17 00:11

極端に言えば、「object」というキーワードがそのまま使われているのかどうかでも作り方が違います。
Zuishin

2020/01/17 00:15 編集

記載されているものが置換できればいいだけなら簡単ですが、その場合、他のファイルが置換できなくても文句を言えません。
Zuishin

2020/01/17 00:22

編集されて思った通り全然別物になりました。B ファイルの仕様では Layer の区別ができません。
Zuishin

2020/01/17 00:25

B ファイルは JSON や CSV などできちんと「仕様のある」形式にする必要があります。
natuyasumi

2020/01/17 00:25

Aファイルからobjectの部分だけ書き出すのは、別に作業しようと考えていました。 Bファイルの仕様について決まりはないので、置換方法に合わせて作ろうかと考えていました。
natuyasumi

2020/01/17 00:28

何度もすみません、Bファイルはcsvにします。
Zuishin

2020/01/17 00:36 編集

置換対象が特定のキーワードなのかそれとも部分文字列を含むのか、A ファイルはスペースと改行でのみ区切られるのか、ダブルクォーテーションを考慮するのか、大文字小文字を区別するのか、階層構造は二層なのか不定なのか「など」、多くの仕様が必要になります。
natuyasumi

2020/01/17 00:36

Objectスペース"任意の整数"スペース、の箇所が置換対象で。置換対象以外に"Object”が出てくることはありません。 大文字小文字区別なし、ダブルクォーテーション考慮なしでいいかと。
Zuishin

2020/01/17 00:39

ファイル A は階層構造になっています。二層なのか不定なのか、構造を区分するキーワードは固定なのか違うのか、そのキーワードも置換して良いのかなど、多くの仕様が必要になります。
natuyasumi

2020/01/17 00:46

階層は不定で、 SetMap Layer1 Layey2 SetMap Layer1 といったケースもあります。"SetMap""Layer"のキーワードは固定です。
Zuishin

2020/01/17 01:13

階層不定でナンバリングもされているので階層設定を指示するファイルが必要になります。B と一つのファイルに収めたいなら CSV ではなく JSON が良いでしょう。 だいたい固まったと思うので、それを整理して質問を編集してください。 割と面倒な仕様なので、やり方だけ教えるのは無理ですし、作ろうと思えばある程度時間がかかります。作った後で全部作り直しになるような追加仕様が出ないよう、詳細に考えて書いてください。 私が回答するかどうかはそれを見て決めます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問