ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.4003970 コマンドプロンプトのリダイレクト方法
質問者:always コマンドプロンプトで、フォルダ名を一旦 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(空白) としか記入されていません)

どうしてでしょうか?(´Д⊂
ちょっと質問の意図が分かりづらいでしょうか…; 申し訳ありません;

お分かりになる方がいらっしゃいましたら、どうかご教授お願い致します!
困り度:
  • すぐに回答を!
質問投稿日時:
08/05/07 12:28
この質問に対する回答は締め切られました。

回答良回答20pt

ANo.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
回答者:jjon-com
種類:回答
どんな人:経験者
自信:自信あり
回答日時:
08/05/07 17:25
この回答へのお礼jjon-com さん、ご回答ありがとうございます!!
一日中悩んでいたのですが、jjon-comさんのおかげで解決できそうです!!(^^@)
cd fol_D と記述させることができました!
本当にありがとうございます<(_ _)>

fol_C の中に、fol_D、fol_Z …とか、複数あるとちょっと困りますね…;
ですが、これは運用でカバーしたいと思います!
複数フォルダ作成はNGって事で…!(^_^;)

お付き合い頂き、ありがとうございました!

回答良回答10pt

ANo.2 >dir /b > C:\\foldername.txt
カレントディレクトリの値でよければ、
ディレクトリ文字列は変数%CD%で取り出せますから、

echo cd %CD% >aaa.txt

で、aaa.txtの中身は cd MAY-07 のようになると思います。
回答者:ohbacomeon
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/05/07 16:32
この回答へのお礼ohbacomeon さん、ありがとうございます〜!
もう、ワラにもすがる思いでしたので、投稿頂いてとても感謝感激です!(^人^)

ただ、とても申し訳ないのですが、カレントディレクトリ…では
なかったので、私の技術不足で対応できませんでした。。ううう。

(でもきっと、jjon-com さんのおっしゃるpushdを使えば、きっと一時的にカレントディレクトリにして…って事ができるのかも!)

echo cd %CD% >aaa.txt
を実行すると、私だけでしょうか。。cd MAY-07とはならずに、
絶対パスで表示されてしまうのは…;;

回答

ANo.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-bf3...
回答者:jjon-com
種類:回答
どんな人:経験者
自信:自信あり
回答日時:
08/05/07 13:36
この回答へのお礼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を置いておきたくないのです。

自分で複雑にしているような気もして、もっと他に良いやり方が
あるのかもしれないのですが、ちょっと限界で…(´Д⊂

お手数をお掛けしてすみません。。
どうぞよろしくお願いいたします。<(_ _)>