• ベストアンサー

コマンドプロンプトのリダイレクト方法

コマンドプロンプトで、フォルダ名を一旦 foldername.txt に書き出してから、 リダイレクトでコマンドの入力を、ファイルから読み取る、という事をしたいのですがうまくいきません。 dir /b > C:\\foldername.txt で、フォルダ名を取り出してから、(foldername.txt には MAY-07 と記述されます) cd < C:\\foldername.txt > C:\\aaa.txt (cd MAY-07、と記入されたaaa.txtを作成したい) ですが、実際に実行してみると、 cd 0<C:\\foldername.txt 1 > C:\\aaa.txt となってしまいます。。 (aaa.txtには、cd(空白) としか記入されていません) どうしてでしょうか?(´Д⊂ ちょっと質問の意図が分かりづらいでしょうか…; 申し訳ありません; お分かりになる方がいらっしゃいましたら、どうかご教授お願い致します!

質問者が選んだベストアンサー

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.3

>fol_D は毎回クリアにしてから、新しく作成するフォルダ >なので、できればその中にはbatを置いておきたくない 以下のようにすれば foldername.bat を好きなフォルダに置けます。 ---------------------------------------- @echo off pushd C:\fol_A\fol_B\fol_C for /d %%x in (*) do echo cd %%x popd ---------------------------------------- pushd/popdコマンドは次のURLを参照。 http://www.atmarkit.co.jp/fwin2k/win2ktips/792pushd/pushd.html

always
質問者

お礼

jjon-com さん、ご回答ありがとうございます!! 一日中悩んでいたのですが、jjon-comさんのおかげで解決できそうです!!(^^@) cd fol_D と記述させることができました! 本当にありがとうございます<(_ _)> fol_C の中に、fol_D、fol_Z …とか、複数あるとちょっと困りますね…; ですが、これは運用でカバーしたいと思います! 複数フォルダ作成はNGって事で…!(^_^;) お付き合い頂き、ありがとうございました!

その他の回答 (2)

noname#210617
noname#210617
回答No.2

>dir /b > C:\\foldername.txt カレントディレクトリの値でよければ、 ディレクトリ文字列は変数%CD%で取り出せますから、 echo cd %CD% >aaa.txt で、aaa.txtの中身は cd MAY-07 のようになると思います。

always
質問者

お礼

ohbacomeon さん、ありがとうございます~! もう、ワラにもすがる思いでしたので、投稿頂いてとても感謝感激です!(^人^) ただ、とても申し訳ないのですが、カレントディレクトリ…では なかったので、私の技術不足で対応できませんでした。。ううう。 (でもきっと、jjon-com さんのおっしゃるpushdを使えば、きっと一時的にカレントディレクトリにして…って事ができるのかも!) echo cd %CD% >aaa.txt を実行すると、私だけでしょうか。。cd MAY-07とはならずに、 絶対パスで表示されてしまうのは…;;

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

>フォルダ名を一旦 foldername.txt に書き出してから でないと質問者のニーズには合いませんか? 次のような中身が2行のバッチコマンド foldername.bat を作っておき, ---------------------------------------- @echo off for /d %%x in (*) do echo cd %%x ---------------------------------------- foldername.bat >aaa.txt と実行するというのはダメですか? 以下,リファレンスマニュアルの引用です。 コマンド拡張が有効の場合 (既定) は、次の形式の for がサポートされます。 ・ディレクトリのみ Set にワイルドカード (* と ?) が含まれている場合は、指定した Command は、指定したディレクトリにある一連のファイルではなく、Set と一致するすべてのディレクトリに対して実行されます。構文は次のとおりです。 for /D {%% | %}Variable in (Set) do Command [CommandLineOptions] http://technet2.microsoft.com/WindowsServer/ja/library/7a2c7d08-bf35-414a-8a04-7e870559c82d1041.mspx?mfr=true

always
質問者

お礼

jjon-comさま 早速にご回答ありがとうございました! C:\fol_A\fol_B\fol_C\fol_D foldername.bat の置き場所 →fol_B foldername.bat の内容 ---------------------------------------- @echo off for /d %%x in (*) do echo cd %%x ---------------------------------------- foldername.bat > aaa.txt を実行すると、 aaa.txtには、 cd fol_A となってしまいます。 foldername.bat >aaa.txt と実行して、結果は fol_D のみ記述、としたいのですがどうすれば良いでしょう…?(TдT) for /d %%x in (c:\fol_A\fol_B\fol_C\*) do echo cd %%x > foldername.bat としてみたのですが、そうするとaaa.txtの結果が C:\fol_A\fol_B\fol_C\fol_D と出てきてしまいます。。 fol_D に foldername.bat を置いておけば済む話なのですが、 fol_D は毎回クリアにしてから、新しく作成するフォルダなので、できれば その中にはbatを置いておきたくないのです。 自分で複雑にしているような気もして、もっと他に良いやり方が あるのかもしれないのですが、ちょっと限界で…(´Д⊂ お手数をお掛けしてすみません。。 どうぞよろしくお願いいたします。<(_ _)>

関連するQ&A