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

こんにちは
教えてほしいことがあります。

batファイルで他のbatファイルを実行するためにcallで呼び出すと、処理がまた戻ってくる事を知り、
以下のようにやってみたのですが、戻ってきている様子がありません。

どこが間違っているのか教えていただければと思います。

以下file-backup.bat

echo 処理開始 >> %LOG%
date /t >> %LOG%
time /t >> %LOG%

C:\****\Backup\FastCopy198\fastcopy.exe /cmd=force_copy /auto_close /open_window /error_stop=TRUE /log /from_date="-2D" "D:\file2" "/to=\\********\file2"

@echo off
call "Z:\file-backup2.bat"

echo 処理終了 >> %LOG% ←---これ以下がログファイルに表示されない
time /t >> %LOG%
echo. >> %LOG%


ログに「処理終了」が入ってきませんので、callで戻ってきていないと判断しました。

環境はwinserver2008です。

ご教授お願いします。

A 回答 (6件)

>どこが間違っているのか教えていただければと思います。


--> call で戻っている可能性があるのに断定している処。

> ログに「処理終了」が入ってきませんので、callで戻ってきていないと判断しました。
--> それは考えがおかしい。そう思うなら
  echo 処理終了
  とでも変えればいいです。表示されたら戻っている訳ですから。
  そもそも %LOG% には絶対パスでファイル名をセットしていますか?
  多分、カレントが変わってしまっていると予想します。
    • good
    • 1

CALLについての推察は、他の方の指摘であたっているのだろう。



私は、他のコマンドの呼び出しについて。

私もCALLを最初に思いつきましたが(15年前)、実は

START

コマンドの方が向いているし、32bit Winアプリにも合うことがわかりそれを多用しています。

逆にBATファイルや、DOSコマンドなど意外な機能もあったので、今はStartで呼び出しています。

利点
1.

擬似的なバックグランド処理ができる。MS-DOSや以前のDOS(IBM-DOS)の6.0ぐらいまではUNIX系のシェルのバックグランド処理指定ができませんでした。UNIX系だとコマンドの直後に”&”を付けるだけでバックグランドとなり、コマンドプロンプトなのに、並列処理ができました。しかも優先順位がつけられます。

これと同じごとができます

start /b

2.

待ち状態が指定可能。

並列処理したりWin32アプリだと、実行と共に処理が次の行に移るために、結果を待つ場合、不都合が生じます。その時

start /wait

でいいわけです

他の処理は

start /?

で見てください。そして、試してみてください。

今回の場合も処理が終了してから実行するなら、

start /wait **.bat

ちなみにコマンドプロンプトでは、Win32アプリは処理を待たないのをしっていますか?

start /b /wait notepad & echo back

start /b notepad & echo back

この違いわかりますか

さらに他の方も指摘していますが・

>ログに「処理終了」が入ってきませんので、callで戻ってきていないと

これは、大いに間違えています。何が間違っているのか、気がつかないと、今回の問題は解決しません。まあ、解決したとしても、たぶん次回も同じまちがいをしてつくってしまって、手に負えなくなり、他人にきくことになるのでしょう。
    • good
    • 1
この回答へのお礼

皆様からのアドバイスありがとうございました。

コマンドとカレントディレクトリについてまだまだ知識が浅かったと反省しております。

無事処理ができました。
ありがとうございました。

お礼日時:2011/05/28 23:39

No.2の続きです。


file-backup2.batがあやしいですね。
file-backup2.batについて次のことはありませんか。
・正常に終了していない。
・他のバッチファイルをcall無しで実行していてそこで処理が終了してしまっている。
    • good
    • 0

Z:\file-backup2.bat


の中に
exit
っと書いてませんか?
    • good
    • 2

任意の引数を与えてcallしてみてはどうですか。

    • good
    • 0

call "Z:\file-backup2.bat"


これが動いたかどうかは?

この回答への補足

これは動きました。

補足日時:2011/05/28 19:15
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A