これ何て呼びますか

思い出集
 ∟旅行
  ∟写真
 ∟映画
  ∟写真
 ∟温泉
  ∟写真

上記のような「フォルダ構造」があります。
それぞれの「写真」フォルダ内に、直前のフォルダ名をファイル名としたtxtファイル(旅行.txt、映画.txt…)を生成したいと考え、下記のようなcmdコマンドを書き、「思い出集」フォルダをカレントディレクトリにして実行してみました。

FOR /D %A IN (*) DO echo a > %A.txt

フォルダ名を取得するまでは良いのですが、txtファイルが生成される場所がカレントディレクトリである「思い出集」フォルダになってしまいます。

これをそれぞれの「写真」フォルダ内に生成するには、どのようなコマンドを書いたらよいのでしょうか?
よろしくお願いいたします。

A 回答 (3件)

#2 です。



>ご教示いただいたコマンドをただ貼り付けしたファイルでは正常に動作しませんでした(cmdを立ち上げ直接記述するともちろんうまくいきます)。

>バッチもしくはcmdファイルとして実行する際は何か特別な記述が必要なのでしょうか?

はい。
バッチにする時は、FOR文の %A は %%A 、つまりパーセント2つにしてください。

そうしないと、「Aの後に何か続く変数名」を探してしまい、エラーになります。
(確か、そう言う事だったと思います)

逆にコマンドプロンプトから直接実行する時は、今回のやりとりの通り、パーセントは1つです。
    • good
    • 0
この回答へのお礼

どうもありがとうございました!
無事実行することができました!

お礼日時:2011/09/17 11:07

>FOR /D %A IN (*) DO mkdir %A\写真 echo a > %A\写真\%A.txt



>上記のような2つの命令を出すにはどのようにすればよろしいでしょうか?

& を使って連続実行させるか、括弧を使って改行します。

FOR /D %A IN (*) DO mkdir %A\写真 & echo a > %A\写真\%A.txt

または

FOR /D %A IN (*) DO (
mkdir %A\写真
echo a > %A\写真\%A.txt
)

それと、これは老婆心ながら。
今後フォルダを増やして、再度このコマンドを実行すると、既存のフォルダは上書きされませんが、テキストファイル自体は上書いてしまいますので、アペンドでリダイレクトした方がよいかと。

echo a >> %A\写真\%A.txt
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
ご指摘の通りそのようなケースが想定されるので>>を使用します。

このコマンドをバッチもしくはcmdファイルとして保存し、カレントディスク内でダブルクリックすると実行されるようにしたいと思ったのですが、
ご教示いただいたコマンドをただ貼り付けしたファイルでは正常に動作しませんでした(cmdを立ち上げ直接記述するともちろんうまくいきます)。

バッチもしくはcmdファイルとして実行する際は何か特別な記述が必要なのでしょうか?

お礼日時:2011/09/17 10:05

実際に同じ構造のフォルダを作って試してはいませんが、



FOR /D %A IN (*) DO echo a > %A\写真\%A.txt

で大丈夫なはずです。
    • good
    • 0
この回答へのお礼

ありがとうございます!教えて頂いた方法で出来ました!

よく見ると「写真」フォルダが無いディレクトリも存在していたため、
先に「写真」フォルダを作成してから、「写真」フォルダ内にtxtファイルを生成したいと考え、下記のコマンドを書いてみましたが、うまく起動しませんでした。

FOR /D %A IN (*) DO mkdir %A\写真 echo a > %A\写真\%A.txt

上記のような2つの命令を出すにはどのようにすればよろしいでしょうか?

お礼日時:2011/09/17 05:16

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