[前の記事]« バッチファイルからEXCELのマクロを起動する方法
[次の記事]CD-ROMドライブの有無をバッチで判断する方法 »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「CALL,GOTO」索引へ

CALLで「ディレクトリが違います」と出る

270) batから別のbatを呼び出すのは? 田吾作 2003/05/28(水) 22:58


Windows 98 or XPにおいて、次のようなa.batとCD.batが同じディレクトリにおいてあります。
a.batからCD.batを呼び出したいのですが、「ディレクトリが違います」というメッセージが出て困っております。どこがいけないのでしょうか。

ちなみにWindowsXPでは、これでOKなのですが。

[a.bat]
call CD.bat
……
……

[CD.bat]
cd > cd.txt
sed -f cd.sed cd.txt > efg.bat

ご教授のほどよろしくお願いします。

271) Re:batから別のbatを呼び出すのは? 福田 2003/05/29(木) 05:52




>a.batからCD.batを呼び出したいのですが、「ディレクトリが違います」というメッセージが出て困っております。どこがいけないのでしょうか。

>ちなみにWindowsXPでは、これでOKなのですが。

>[a.bat]
>call CD.bat
>……
>……

>[CD.bat]
>cd > cd.txt
^^^^^^^
これが、「ディレクトリが違います」の原因では、cd.txtというディレクトリは存在するのですか
(これは何を行いたいのですか)

MS-DOS V6の頃までの知識しかありませんが・・・


272) Re2:batから別のbatを呼び出すのは? 田吾作 2003/05/29(木) 08:17


レスありがとうございました。

>これが、「ディレクトリが違います」の原因では、cd.txtというディレクトリは存在するのですか
>(これは何を行いたいのですか)

>MS-DOS V6の頃までの知識しかありませんが・・・


CDというディレクトリはありません。
カレントディレクトリをCD.txtに書き込んで、以降のsed.exeでの利用を考えています。

このスクリプトは、配布を考えておりまして、人によってどのディレクトリに置くかわかりません。ですので自分の位置をバッチファイルで自動的に確認するようにしたいのです。

#ちなみに過去ログを参照してcommand /cなる方法を見つけ試してみたのですが、ダメでした。

なぜにXPではよくて98やMEではダメなのかなぁ~



277) Re3:batから別のbatを呼び出すのは? Hellcat 2003/05/29(木) 23:25


>なぜにXPではよくて98やMEではダメなのかなぁ~

MEの場合
CALL CD.BAT
で確実にCD.BATに制御が渡っているでしょうか。
CALL.BATの先頭にechoコマンドでも挿入し、制御が渡っているかどうかを確認した方が良いと思います。

というのは、CALL CD.BATという記述は、意に反して内部コマンドのCDコマンドが実行されているのではないかと思料されるからです。

たしか、MEの場合ですとXPなどと異なりコマンドの拡張子を指定しても無視される仕様になっていたのではなかったか記憶しています。
つまり、例えば、TEST.COM TEST,EXE TEST.BATというファイルが同一ディレクトリーに存在した場合、TEST.BATと指定し実行要求をかけても、実行されるのはTEST.COMであ るということです(優先順位があって、COM→EXE→BATの順で探し出され実行される)。
またTESTというコマンドがCOMMAN.COMに内蔵されていればそれが最優先で実行されるはずです。

ということで、CD.BATという記述部分は内部コマンドのCDに対する実行要求と解釈されてしまい、永久にCD.BATには起動がかからないということです。要は名前を変えれば良いのです。うろおぼえの部分がありますが、トライしてみてください。







281) Re4:batから別のbatを呼び出すのは? 田吾作 2003/05/30(金) 12:34


レスありがとうございます。

おっしゃるとおり、名前を変えれば正常動作しました!
でも不思議です。callはバッチファイル「だけ」を呼び出すと思ってました。
またよしんば内部コマンドを呼び出したとしても、内部コマンドなのだからディレクトリ云々は関係なさそうですが。

それから、またまたXPと98、MEでのcall動作の違いがありました。
XPではちゃんと出先のバッチファイルの終了を待って戻ってくるのですが、
98、MEでは出先のバッチが動作している間に、自分のバッチを実行しておりました。

これは出先のバッチファイルがどんな処理をするのかにもよるのでしょうね。

282) Re5:batから別のbatを呼び出すのは? Hellcat 2003/05/30(金) 21:00


>またよしんば内部コマンドを呼び出したとしても、内部コマンドなのだからディレクトリ云々は関係なさそうですが

CDコマンドを呼び出すディレクトリーが誤っているという意味で
はありません。


CD.BATという記述がCD .BATとして、つまり".BAT"がCDコマンドの
アーギュメントとして扱われてしまうため(存在しないディレクト
リーを指定したことになってしまい)、くだんのエラーメッセージ
が出力されるのです。



283) Re6:batから別のbatを呼び出すのは? 田吾作 2003/05/30(金) 22:13


レスありがとうございました。

>CDコマンドを呼び出すディレクトリーが誤っているという意味で
>はありません。


>CD.BATという記述がCD .BATとして、つまり".BAT"がCDコマンドの
>アーギュメントとして扱われてしまうため(存在しないディレクト
>リーを指定したことになってしまい)、くだんのエラーメッセージ
>が出力されるのです。


なるほど、.BATまで待たずに、CDと読み込んだ時点で内部コマンドのCDと早合点するのですね。
そこまではOKなのだけれど、後の.BATがPCには何がなにやらわからないと。

この部分の変な動作になるわけがわかりました。



284) Re7:batから別のbatを呼び出すのは? Hellcat 2003/05/31(土) 00:43


#282の補足というか訂正です。

カレントディレクトリーにBATというディレクトリーを予め作成しておき
CALL CD.\BAT
で実行すると、BATディレクトリーへジャンプすることが確認できました。

で、CALL CD.BAT ではやはりジャンプできず例のエラーメッセージが出力されます。
ということは、".BAT"の表記方法に問題があるということになります。

考えてみれば、"."はカレントディレクトリーを示す記号ですから、".\BAT"としなければなりません。

ということで、#282で".BAT"が存在しないディレクトリーのためエラーになっていると書きましたが、
そうではなくて、".BAT"という表記が文法エラーのため、例のメッセージが出力されているものと思われます。

いずれにしろCALL CD.BATという表記ではCD.BATファイルをコール出来ないと言うことに変わりはありません。

確認OS Windows Me (ver 4.90)


286) Re8:batから別のbatを呼び出すのは? じゃく 2003/05/31(土) 17:42



>確認OS Windows Me (ver 4.90)


わたしも、 Windows Me で検証してみました。
まず、cd.bat というバッチファイルを作成。

-------------- cd.bat
echo aaa
--------------

次にコマンドラインからcd.batを呼び出すも、
やはり内部コマンドと同一名称の場合を内部コマンドを
優先するようです。
C:\>cd.bat
ディレクトリの指定が正しくありません.

そこで、パスを指定。
C:\>.\cd.bat

C:\>echo aaa
aaa

C:\>

うまくいきました。
当然、call文を使っても
C:\>

C:\>call .\cd.bat

C:\>echo aaa
aaa

C:\>
うまく行きましたので、.\cd.batのようにパスとなる文字を付加すれば
どのOSでも動くのではないかと思います。



288) Re9:batから別のbatを呼び出すのは? 福田 2003/05/31(土) 19:53



>うまく行きましたので、.\cd.batのようにパスとなる文字を付加すれば
>どのOSでも動くのではないかと思います。

前のほうにコメントを書きかけてやめたのですが、書いたほうが良いみたいなので(でしゃばりすぎかと・・・・)

私がMS-DOSを使っていた頃は、予約名(DOS、Basic、コンパイラ等全ての場合)を使用するのはご法度でした

MS-DOSが遠い過去になりつつあるので、このような常識が伝わらず、無駄なトラブルに巻き込まれているように感じてしまいます



289) Re10:batから別のbatを呼び出すのは? 田吾作 2003/05/31(土) 23:30


みなさん、たくさんのレスありがとうございました。

.\bat、こんな書き方もできるとは……
予約名、そういえば聴いたことがあったような……

そろそろ私の脳みそでは理解不可能な領域になってきたようです。

287) Re4:batから別のbatを呼び出すのは? Hellcat 2003/05/31(土) 18:38


お騒がせしています。訂正です。

>たしか、MEの場合ですとXPなどと異なりコマンドの拡張子を指定しても無視される仕様になっていたのではなかったか記憶しています。

この部分ですが、ちょっと自信がなかったので検証してみたところ、拡張子を指定した場合は無視されることなく、当該コマンドが実行されることが確認されました。
「拡張子が無視される」という部分は、訂正します。m(__)m

ちなみに、CALL TYPE.BATとすると
「ファイルが見つかりません. - .BAT」
というエラーメッセージが出力されることから、CALL CD.BATでも".BAT"がCDコマンドの引数として解釈されているものと思われます。

確認OS Windows95, WindowsMe, MS-DOS(Ver 5.0A-H)


273) Re:batから別のbatを呼び出すのは? YanaKen 2003/05/29(木) 19:12


田吾作さん こんにちは。

>a.batからCD.batを呼び出したいのですが、「ディレクトリが違います」というメッセージが出て困っております。どこがいけないのでしょうか。
(中略)
>ちなみにWindowsXPでは、これでOKなのですが。

>[a.bat]
>call CD.bat
>……
>……

>[CD.bat]
>cd > cd.txt
>sed -f cd.sed cd.txt > efg.bat

・質問文面からは、エラーメッセージの具体的な発生個所がどこなのかが読み取れませんが、CALLのところでエラーが出ているのでしょうか、CDコマンドが実行された時点でしょうか、あるいはSEDの実行時でしょうか。
・エラーメッセージは完全にそのとおりの文面でしょうか。

YanaKen

[個人homepage] [@pay導入について] [YanaKenの@pay窓口]


274) Re2:batから別のbatを呼び出すのは? 田吾作 2003/05/29(木) 19:33


yanakenさん、レスありがとうございます。

>>[a.bat]
>>call CD.bat
>>……
>>……
>>
>>[CD.bat]
>>cd > cd.txt
>>sed -f cd.sed cd.txt > efg.bat

>・質問文面からは、エラーメッセージの具体的な発生個所がどこなのかが読み取れませんが、CALLのところでエラーが出ているのでしょうか、CDコマンドが実行された時点でしょうか、あるいはSEDの実行時でしょうか。

CDコマンドが実行された時点です。
>・エラーメッセージは完全にそのとおりの文面でしょうか。
手元にMEしかないのですが、MEは「ディレクトリの指定が正しくありません」になっています。

98は、確かに、「ディレクトリが違います」と出ていたように記憶しています。


276) Re3:batから別のbatを呼び出すのは? 福田 2003/05/29(木) 22:27


バッチファイルでなく、キーボード入力で同じエラーが出るか確認したほうがよろしいようです

Win98SEで、直接入力の場合

c:\>cd
c:\

c:\>

となることを確認しました


280) Re4:batから別のbatを呼び出すのは? 田吾作 2003/05/30(金) 12:33


レスありがとうございます。
直接入力で、

c:\>cd
c:\

は、確かに正常でした。

c:\>call cd.bat

だと先のエラーメッセージが表示されます。


285) Re5: batから別のbatを呼び出すのは? いんべひろし 2003/05/31(土) 16:00


田吾作さん、こんにちは。

思いつきレベルで恐縮ですが、CD.CATにフルパスを指定したらどうなり
ます?
配布用とのことで使い勝手の面を犠牲にしてしまうかもしれませんが...

-- いんべひろし --
「いんべさんタトイ乍三昧」 http://www5.vc-net.ne.jp/~satow/
「いんべさんの秘密基地」 http://vc-net.gaiax.com/home/imbe3/main
  • ◆270.  batから別のbatを呼び出すのは? (田吾作)   2003/05/28(水) 22:58
    •  271.  Re:batから別のbatを呼び出すのは? (福田)   2003/05/29(木) 05:52
      •  272.  Re2:batから別のbatを呼び出すのは? (田吾作)   2003/05/29(木) 08:17
        •  277.  Re3:batから別のbatを呼び出すのは? (Hellcat)   2003/05/29(木) 23:25
          •  281.  Re4:batから別のbatを呼び出すのは? (田吾作)   2003/05/30(金) 12:34
            •  282.  Re5:batから別のbatを呼び出すのは? (Hellcat)   2003/05/30(金) 21:00
              •  283.  Re6:batから別のbatを呼び出すのは? (田吾作)   2003/05/30(金) 22:13
                •  284.  Re7:batから別のbatを呼び出すのは? (Hellcat)   2003/05/31(土) 00:43
                  •  286.  Re8:batから別のbatを呼び出すのは? (じゃく)   2003/05/31(土) 17:42
                    •  288.  Re9:batから別のbatを呼び出すのは? (福田)   2003/05/31(土) 19:53
                      •  289.  Re10:batから別のbatを呼び出すのは? (田吾作)   2003/05/31(土) 23:30
          •  287.  Re4:batから別のbatを呼び出すのは? (Hellcat)   2003/05/31(土) 18:38
    •  273.  Re:batから別のbatを呼び出すのは? (YanaKen)   2003/05/29(木) 19:12
      •  274.  Re2:batから別のbatを呼び出すのは? (田吾作)   2003/05/29(木) 19:33
        •  276.  Re3:batから別のbatを呼び出すのは? (福田)   2003/05/29(木) 22:27
          •  280.  Re4:batから別のbatを呼び出すのは? (田吾作)   2003/05/30(金) 12:33
            •  285.  Re5: batから別のbatを呼び出すのは? (いんべひろし)   2003/05/31(土) 16:00
 
 


カテゴリー「CALL,GOTO」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2003年05月28日 18:53に投稿されたエントリーのページです。

ひとつ前の投稿は「バッチファイルからEXCELのマクロを起動する方法」です。

次の投稿は「CD-ROMドライブの有無をバッチで判断する方法」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート