dポイントプレゼントキャンペーン実施中!

お世話になります。

テキストファイルに保存した
リスト(各行に記述)から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で質問しましょう!