見守り電球またはGPS端末が特価中!

バッチファイルで、あるスクリプトがエラーになっても、つぎのスクリプトを実行させたいと考えています。
具体的には、
■call.bat■
******************
call 1.bat
call 2.bat
******************


■1.bat■
******************
mkdir test1
******************

■2.bat■
******************
mkdir test2
******************

の3つのバッチファイルで、1.batがエラーになっても
2.batを実行させたいと考えています。
どうしたらいいのでしょうか。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

>1.batが終了しなくても、


>2.batを実行させたいと考えています。

なるほど。簡単そうに出来るのは
start cmd /C 1.bat
start cmd /C 2.bat
ですかね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
説明不足でもうしわけありません。

教えていただいた方法をためしたのですが、
1.batが終了しなくても
2.batが実行するのは
1.batでエラーになったときのみにしたいと考えています。
1.batが正常に終了する場合は、
1.bat終了後に2.batが動くようにしたいと考えています。

お礼日時:2009/09/03 17:52

そもそもxcopyだけを使うのに1が終了しないなんて事があるんですか?他の精査されていないプログラムを使うならわかりますが・・xcopyはコマンドラインから使うことを意識されて作られた(というかコマンドライン前提の)プログラムですよ?当然バッチからの起動も考慮しているでしょう。

ゆえに正しくパラメータを与えれば途中で止まったりするような事はないはず?です。

テストはしてみました?ロックがかかってると止まる?そんな事はないと思いますけど・・。予想しないエラーってなんですか?



それにxcopyがある時点で止まっていたとして(プログラムとしては動いているといえます。)それがエラーなのか。正常に動作しているか外部から検出する方法は標準エラー出力をチェックするくらいしか出来ないと思います。

どこかで止まっているとして、それが単に時間のかかる処理を行っている最中なのか、エラーなのか外部からどうやって見分けるのでしょうか?一定の時間がきたらタイムアウトですか?それならやろうと思えば技術的には出来ますけど・・。

もっとご自身でテストを行って具体的にこういう問題がありますと提示してください。それならば回答を示すことはできるかもしれませんが、現時点では漠然としすぎています。手間のかかるテストまでこちらでできませんよ。
    • good
    • 0

xcopy には上書きを確認しないオプションがあります。

batで実行させたい時にはそれを使います。ファイルロックに関しては未テストなのですが処理が止まってしまうのですか?普通はコピーできませんでしたのエラーがでて次の処理に移るかと思いますけど。。テストしてみればいいんでしょうけど排他ロックかけるプログラム書いてテストするのがめんどい。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
説明不足でもうしわけありません。

確かにそうなのですが、予想しないエラーが起きた場合に、
1.batが終了せず、途中で止まった場合に、2.batを実行させたいと考えています。
1.batが正常に終了する場合は、
1.bat終了後に2.batが動くようにしたいと考えています。

お礼日時:2009/09/03 17:55

試してみたけどうまくいくけど?



バッチファイルはプログラムのエラーチェックなんてやらないから、プログラムが終了して処理が戻ってくる限り次のプログラムは実行されますよ。無限ループとか長時間かかる処理なんかやると次に進まないけど・・

何ができないのですか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
説明不足で申し訳ありません。

1.batの中身は
xcopy C\test\*.* \\server1\test
なのですが、
*.*の中のあるファイルが使用中でコピーできなかったり、
あるいは、コピー先に同じ名前のファイルがあったりした場合に
上書きするかどうかを聞くところでとまったりした場合などに、
1.batが終了しなくても、
2.batを実行させたいと考えています。

基本的には1.batのあとに2.batを実行させたいのですが、
上記のような場合に1.batが実行途中でとまったとしても、
2.batを実行させたいと考えています。
可能でしょうか。
よろしくお願いします。

お礼日時:2009/09/01 14:25

バッチファイルはコマンドプロンプト上で実行されるものですよね。


call.batのままで上手くいかないですかね。
具体的に「1.batがエラーになっても」というのはどの様なエラーでしょうか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
説明不足で申し訳ありません。

1.batの中身は
xcopy C\test\*.* \\server1\test
なのですが、
*.*の中のあるファイルが使用中でコピーできなかったり、
あるいは、コピー先に同じ名前のファイルがあったりした場合に
上書きするかどうかを聞くところでとまったりした場合などに、
1.batが終了しなくても、
2.batを実行させたいと考えています。
可能でしょうか。
よろしくお願いします。

お礼日時:2009/09/01 14:22

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qbatファイルからsql文実行

クライアントOS:WIN2000
Oracle:9i(サーバ(UNIX)上にあります)

現在、クライアントからbatを起動し、SQL文を投げ、結果を取得したいと思っております。
(SQL文は単純にTBLをカウントしているだけです)

・batの中身
sqlplus %UID%/%PASS%@%SID% @test.sql > output

結果は取得出来るのですが、余分な情報も結果に出力されてしまいます。結果のみを出力させるにはどうすればよろしいでしょうか?

・余分な情報
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
に接続されました。

Aベストアンサー

sqlplus に -S オプションを追加してみればどうでしょうか。

参考URL:http://biz.rivus.jp/sqlplus_overview.html

Qdosバッチ起動後、画面を閉じないようにしたい。

調査.batに1行type test.txtを表示するバッチを作成したのですが、すぐ画面がとじます。

dosバッチ起動後、コマンド画面を閉じないようにするには、次の行に何か書くのでしょうか。
宜しくお願いします。

Aベストアンサー

最後の行に
pause > nul
と加えてみてください。

何かキーを押すとウィンドウが閉じます。

Q指定したURLを表示させるバッチファイル

IEが起動してない状態で、IEを起動させて指定したURLを表示させるバッチファイルを教えて下さい。
バッチファイルAを実行すると、○●○●○●というURLでIEが起動し、バッチファイルBを実行すると、△▲△▲△▲というURLでIEが起動する。そういうことです。
よろしくお願いします。

Aベストアンサー

私がやった通りのことを書きます。ご参考に。
(1)インターネットエクスプローラーがExplore(最後rなし)と言うプログラム名であることを知る。
(2)スタート-検索-ファイルやフォルダ-Explore
で検索する。
(3)C:¥Program Files\Internet Explorerにあることを知る。(eのマークによりプログラムファイルであることを知る。)(こちらは最後にrがつく)
(4)バッチファイルを作る。メモ帳に
cd "c:\Program Files\Internet Explorer"
Iexplore "http://www.okweb.ne.jp/kotaeru.php3?qid=610162"
と入れて、url.batと言うファイル名で保存。
urlは任意の名で良い。「.bat」は必須です。
”http://・・は任意のURLで可。
(5)メモ帳を閉じる。私の場合はc:¥My Documentsに保存されたことに留意。
(6)スタート-プログラムからDos画面をだす。(98の場合)
(7)CD "c:\My Documents"エンタを入れる。
(8)urlエンタと入れる。.batは不要。
(9)上記のOKWEBの画面になり、止まる。

私がやった通りのことを書きます。ご参考に。
(1)インターネットエクスプローラーがExplore(最後rなし)と言うプログラム名であることを知る。
(2)スタート-検索-ファイルやフォルダ-Explore
で検索する。
(3)C:¥Program Files\Internet Explorerにあることを知る。(eのマークによりプログラムファイルであることを知る。)(こちらは最後にrがつく)
(4)バッチファイルを作る。メモ帳に
cd "c:\Program Files\Internet Explorer"
Iexplore "http://www.okweb.ne.jp/kotaeru...続きを読む

Qバッチファイルで、プログラムを終了させる方法を教えてください。

バッチファイルでAAA.exeというソフトを呼び出し、呼び出し後、10分したら、終了したいのです。

AAA.exeは、フリーソフトでウェブサイトから、情報をダウンロードするものです。
呼び出されたら、自動的に実行します。
しかし、ダウンロードが終了しても、自動的に終了する設定が無いのです。
ダウンロードは二分ていどかかります。

今は、OSのタスクから、一時間毎にバッチファイルを読み込み、AAA.exeを実行しています。
その後手動で、AAA.exeを終わらせています。

よろしくお願いします。

Aベストアンサー

バッチファイルでは無理だと思います。

タスクの設定で、バッチファイル経由ではなく AAA.exe を直接実行するようにすれば、arukamun氏のおっしゃる方法で AAA.exe を終了させることが可能かと思われます。

Qコマンドプロンプトを使ってipアドレスからコンピュータ名を知る方法

ipアドレスは分かっていますがコンピュータ名が分かりません。リモート接続ソフトなどは使えないので、それでコンピュータ名を調べることはできません。
コマンドプロンプトを使ってipアドレスからコンピュータ名を知る方法を教えてください!

Aベストアンサー

なんか回答がバラバラなので整理しましょう。
調査している自分自身が使用している端末は、Windows XPのPCであると仮定します。
また、調べるのは基本的に外部から名前解決可能な名前(No.2さんの言う"2"に相当する名前)とします。

パターン1:
対象のIPアドレスがWindows端末機で、自分が使用している端末と同じネットワークに属しているか同一のWINSサーバを参照しているとき……No.4さんの答えで検索できます。

nbtstat -A <IP Address>

パターン2:
ネットワーク管理者がDNSをきちんと管理しており、対象IPについても管理者の管理下にある場合……以下2つのいずれかの方法で検索できます。

  nslookup <IP address>

または

  nslookup -q=ptr <reverse ip>.in-addr.arpa.
  ex) 192.168.12.1 のIPを調べたい場合、以下のように入力する
  nslookup -q=ptr 1.12.168.192.in-addr.arpa.

  (DNSサーバで逆引きが設定されていないと、正しく検索できない場合があります)

パターン3:
上記以外の場合

外部から名前解決できないので、調べようがありません。または、調べてもそれが正しいホスト名である保証がありません。
そのIPの端末自体に設定されているホスト名を直接調べるしかありませんが、それには実際にそのIPの端末を操作して調べるしかありません。
つまり、No.2さんの回答となるのですが、
IPを使用しているのがWindows PCやUnixサーバなどである保証はないので、確認するコマンドはその端末の種類(OS)によって異なります。

なお、tracert (traceroute)を使用する、という回答がありますが、これはパターン1またはパターン2のいずれかまたは両方を満たしていないと表示されませんので、厳密には正しい答えとはいえません。
(たいていの場合、"tracert <IP address>" や "ping <IP address>"で用が足りてしまうことも多いので、必ずしも間違いではないのですが)

なんか回答がバラバラなので整理しましょう。
調査している自分自身が使用している端末は、Windows XPのPCであると仮定します。
また、調べるのは基本的に外部から名前解決可能な名前(No.2さんの言う"2"に相当する名前)とします。

パターン1:
対象のIPアドレスがWindows端末機で、自分が使用している端末と同じネットワークに属しているか同一のWINSサーバを参照しているとき……No.4さんの答えで検索できます。

nbtstat -A <IP Address>

パターン2:
ネットワーク管理者がDNSをきちんと管理して...続きを読む

Qバッチファイルで2つ以上の変数を連結し、1つの変数にしたい。

Windows2000でバッチファイルを作っています。
バッチファイルが受け取る2つのパラメータを %1 %2とすると、
それを連結して、新たな変数 A を作りたいのですが、どのようにすれば良いのでしょうか。

Aベストアンサー

SETで変数にパラメータをセットすればOKだと思います。

例)
SET A=%1%2
echo %A%

QVBA(Excel):他のブックからシートごと取込みたい

他のブックからシートを取込む(シート名を変更して)VBAがわからないのですが、どなたか詳しい方がいましたら、ご教授下さいませ。

以下を例として、ご回答いただけると幸いです。
よろしくお願いします。

----------------------------------
次の3つのブックが存在するとします。
a.xls
b.xls
c.xls

a.xlsにはシートが1つだけあり、シート名は"sheet1"です。
b.xlsにはシートが1つだけあり、シート名は"sheet1"です。
c.xlsにはシートが3つあり、シート名は"sheet1"、"sheet2"、"sheet3"です。

a.xlsにVBAマクロを作り、a.xls上で実行させて、
a.xlsの"sheet1"は残したまま、
b.xlsの"sheet1"のシート名を"sheet1-b"に変更して、
a.xlsのシートとして取込み、
同様に今度は、
a.xlsの"sheet1"、"sheet1-b"は残したまま、
c.xlsの"sheet1"のシート名を"sheet1-c"に変更し、
c.xlsの"sheet2"のシート名を"sheet2-c"に変更し、
c.xlsの"sheet3"のシート名を"sheet3-c"に変更し、
a.xlsのシートとして取込み、
最終的に、a.xlsには、
"sheet1"、"sheet1-b"、"sheet1-c"、"sheet2-c"、"sheet3-c"
の、5つのシートが存在するようにしたいのです。
(各シート上のデータは、a.xlsの各シートとしてすべて移行されている)
----------------------------------

他のブックからシートを取込む(シート名を変更して)VBAがわからないのですが、どなたか詳しい方がいましたら、ご教授下さいませ。

以下を例として、ご回答いただけると幸いです。
よろしくお願いします。

----------------------------------
次の3つのブックが存在するとします。
a.xls
b.xls
c.xls

a.xlsにはシートが1つだけあり、シート名は"sheet1"です。
b.xlsにはシートが1つだけあり、シート名は"sheet1"です。
c.xlsにはシートが3つあり、シート名は"sheet1"、"sheet2"、"sheet3"で...続きを読む

Aベストアンサー

#1です。

お問合せの内容は複雑な処理で、ある程度のスキルを要求されると思います。
下記サンプルはマクロを含む A.xls と同じフォルダ内のExcelファイルに対して処理を行い、オープン判定とコピー判定をする例です。
最低限のエラー処理しかしていません。
マクロで開いたブックを実行後に閉じる処理等もしていませんし、先の質問にあったシート名変更コピーとも組み合わせてはいませんので、必要ならばご自身で考えて見て下さい。

'-------------------------------------------------------------
Sub Test()
Dim myPath As String, myName As String
Dim twb As Workbook, ws As Worksheet
With ThisWorkbook
myPath = .Path & "\"
myName = Dir(myPath & "*.xls", vbNormal)
Do While myName <> ""
 If myName <> .Name Then
   Set twb = OpenBook(myPath & myName)
   If Not twb Is Nothing Then
    For Each ws In twb.Worksheets
      If SheetCopyFLG(ws) Then
       ws.Copy after:=.Worksheets(.Worksheets.Count)
      End If
    Next ws
   End If
 End If
 myName = Dir
Loop
End With
End Sub

'-------------------------------------------------------------
Function OpenBook(myName As String) As Workbook
Dim wb As Workbook
 Set OpenBook = Nothing
 For Each wb In Workbooks
   If LCase(wb.FullName) = LCase(myName) Then
     Set OpenBook = wb
     Exit For
   End If
 Next wb
 If OpenBook Is Nothing Then
   On Error Resume Next
   Set OpenBook = Workbooks.Open(myName)
 End If
End Function

'-------------------------------------------------------------
Function SheetCopyFLG(tws As Worksheet) As Boolean
Dim ws As Worksheet
SheetCopyFLG = True
For Each ws In ThisWorkbook.Worksheets
If tws.Name = ws.Name Then
  If MsgBox(tws.Name & "は存在します。コピーしますか?", _
    vbYesNo + vbExclamation, "SheetCopy") <> vbYes Then
   SheetCopyFLG = False
  End If
  Exit Function
End If
Next ws
End Function

#1です。

お問合せの内容は複雑な処理で、ある程度のスキルを要求されると思います。
下記サンプルはマクロを含む A.xls と同じフォルダ内のExcelファイルに対して処理を行い、オープン判定とコピー判定をする例です。
最低限のエラー処理しかしていません。
マクロで開いたブックを実行後に閉じる処理等もしていませんし、先の質問にあったシート名変更コピーとも組み合わせてはいませんので、必要ならばご自身で考えて見て下さい。

'-------------------------------------------------------------
S...続きを読む

Qフィルタしたセルのコピーをフィルタしたセルに貼り付けたい

タイトルの通りなのですが、フィルタしたセルをコピーし、別シートのフィルタしたセルに貼り付けたいのですが、
別シートに貼り付けた時見えなくなっているセルにもコピーデータが張り付いてしまいます。

上手い方法がありますでしょうか?

Aベストアンサー

Ctrlキーを使用すれば、できますよ。
(例)
Aシートのコピーしたい部分を選択し、Ctrl+右クリックショートカットからコピーをクリックします。
Bシートの貼り付けたい部分にカーソルを持っていき、Ctrl+貼付…

これでできませんかね…ご要望と違う内容でしたらすみません。

Qmoveコマンドで別のドライブにフォルダを移動

moveコマンドで別のドライブにフォルダを移動

コマンドプロンプトでmoveコマンドを使って
フォルダを別のドライブに移動させたいのですが、
「アクセスが拒否されました」と出て移動が
できません。

同じドライブ内だと問題なく移動できます。
また、別のドライブでもファイルなら問題なく移動できます。
フォルダは別のドライブに移動できないのでしょうか?

試してみたことは以下の通りです。
同じドライブでフォルダを移動 → ○
同じドライブでファイルを移動 → ○
別のドライブにフォルダを移動 → ×
別のドライブにファイルを移動 → ○

コマンドの例
■これだとうまくいかない
 (別のドライブにフォルダを移動)
set moto="E:\test1"
set saki="C:\test2"
move %moto% %saki%

■これだとうまくいく
 (別のドライブにファイルを移動)
set moto="E:\test1.txt"
set saki="C:\test2"
move %moto% %saki%

よろしくお願いします。

Aベストアンサー

なるほどね・・・
フォルダの名前がわかっているのであればですが、
set saki="C:\test2" ちなみに"set"はいりませんよ
mkdir %saki%
copy %moto%\*.* %saki%
などと、全ファイルというスタイルでコピー移動してしまえばうまくいきます。
それと移動は同一ドライブでのみできるので、この場合はコピーの方が解決が早いです。
xcopyなどはいかがですか?(標準機能)
使い方などは
xcopy /?
で調べてみてください(おそらくwわくわくするはずですが)

Qバッチファイルが不正終了してしまう行をつきとめたい

長いバッチファイルを実行中、途中で不正終了してしまう場合に、そのバッチファイルの何行目を実行した時に不正終了したのかをつきとめたいのですが、何か方法はあるでしょうか。

又は、現在バッチファイルの何行目であるかを表示するコマンド等無いでしょうか。

ご存知の方がおられましたら、宜しくお願い致します。

Aベストアンサー

最後の行にpauseかcmd.exe /k プログラム名
とすると閉じませんので、ダブルクリックで起動して閉じない設定にできます。


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

人気Q&Aランキング