重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

お世話になります。

テキストファイルに保存した
リスト(各行に記述)からDOSコマンドバッチ処理で
・リスト記述文字列のタイトルのファイル名の
かつファイル内容にもその記述文字列が記述されているという
ファイルを得たいのですが
空白文字が含まれていると、全部の文字列が記述されず欠落します

空白文字の混じった文字列は部分的に欠けてしまい
うまくいきません。

空白文字の混じった文字列の処理に問題があるようです
お知恵を拝借できませんでしょうか?

サンプル
テキストファイルに

東京スカイツリー
横浜豚まんMAP.pdf
奈良 しかせんべい 検索
各行記述し改行してあります

バッチ処理で
東京スカイツリー.txt
横浜豚まんMAP.pdf.txt
奈良 しかせんべい 検索.txt の3つの別ファイル
(拡張子はtxt)を生成するのがメインテーマです


具体的には

ファイル名:東京スカイツリー.txt
ファイル記述内容:東京スカイツリー

ファイル名:横浜豚まんMAP.pdf.txt
ファイル記述内容:横浜豚まんMAP.pdf


ファイル名:奈良 しかせんべい 検索.txt
ファイル記述内容:奈良 しかせんべい 検索

となることを期待しています。


次のようなファイルとフォルダの設定で動作させてみました


フォルダの所在設定

C:\Users\MyPC\Desktop\みやげひんWORK

このフォルダ内に下記の2つのファイルを
おいてあります

1.ファイル名:みやげ.txt

・ファイル内容

東京スカイツリー
横浜豚まんMAP.pdf
奈良 しかせんべい 検索

と記述し、各行毎に改行


2.バッチファイル名:tenkai.bat

記述内容は次のようにしました

for /f %%a in (%1) do echo %%a > %%a.txt

*****************************************
以前テキストファイルに保存したリスト(各行)の
文字列をタイトルにした
フォルダを一括して作るバッチ処理を参考にさせていただき
見よう見まねで作って利用していた経験はあります。
makefolder.bat
for /f %%a in (%1) do md %%a
*****************************************

作業手順

みやげひん.txtファイルをドラッグして
tenkai.batにドロップすると
みやげひんWORKフォルダの中に

東京スカイツリー.txt
横浜豚まんMAP.pdf.txt
奈良.txtの ファイルがフォルダ内に生成されます


これまで、空白の入らない文字で作ったものは
得たい出力結果通りになっていたのですが
奈良(空白)しかせんべい(空白)検索 のような
文字間に空白を挟む物は
空白以前の文字しか読み込まれないようで

ファイル名:   奈良.txt
ファイル記述内容:奈良 のみ記述
となってしまいました


【得たい出力結果】

ファイルのタイトルは
ファイル内容に記述してある文字名で拡張子が.txt
ファイル内容はそれぞれのタイトルと同じ記述

具体的には

ファイル名:東京スカイツリー.txt
ファイル記述内容:東京スカイツリー

ファイル名:横浜豚まんMAP.pdf.txt
ファイル記述内容:横浜豚まんMAP.pdf


ファイル名:奈良 しかせんべい 検索.txt
ファイル記述内容:奈良 しかせんべい 検索

です


問題点としては

奈良 しかせんべい 検索と記述した行は

空白があるためか

タイトルが

ファイル名:   奈良.txt
ファイル記述内容:奈良 のみ記述で
         空白以降の
         (空白)しかせんべい(空白)検索 の文字
         全部が表記されない

ということです

どなたか良い解決法をご教示いただければ幸いです
よろしくお願いいたします

A 回答 (1件)

せっかくのfor /f なのでオプションを付けてみては?



旧:for /f %%a in (%1) do echo %%a > %%a.txt

案1:for /f "delims=" %%a in (%1) do echo %%a > "%%a".txt
案2:for /f "delims=" %%a in (%1) do echo "%%a" > "%%a".txt

でいいと思いマダガスカル。
(オプション内容はデリミタを指定。デフォは「,」と「 」だったハズ)

ファイル出力のあたりが微妙。案2だとダブルクォートも一緒に出しそう。
案1で全部いけたらいいなぁ……

回答の意味&内容違ってたらゴメンあそばせ
    • good
    • 0
この回答へのお礼

yaihakiseru.さま

ありがとうございます。

/fでオプション?

なるほど
/f  テキストファイル内の文章に対してトークンを取り出して代入する
の用法に気がつけばよかったのですね

ご提案いただいたもので試しました。

旧:for /f %%a in (%1) do echo %%a > %%a.txt

案1:for /f "delims=" %%a in (%1) do echo %%a > "%%a".txt==>こちらは期待通りの結果

案2:for /f "delims=" %%a in (%1) do echo "%%a" > "%%a".txt
==>こちらはやはり” ”で挟まれ表示となってしまいました

したがいまして
デリミタ指定、ダブルコーテーションなしでいけます
助かりました。
しかたなく、裏でエクセルでチマチマVBいじって道草食ってましたが
この解決法で、簡単一気に作業がはかどります

ご教示いただきありがとうございました

お礼日時:2017/06/05 19:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!