• ベストアンサー

execでバッチファイル実行の際のコマンド数

今、exec("a.bat")でバッチファイルをコールしています。 a.batには、「if exist *.log del *.log」(A)という内容を、多数のディレクトリに対して設定したいのですが、(A)を8つ以上羅列すると、固まってしまいます。 コマンド数に制限があるのでしょうか?それとも何か方法があるのでしょうか? すいませんが、よろしくお願いいたします。

  • Java
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • mojimojio
  • ベストアンサー率51% (14/27)
回答No.2

バッチファイルの先頭に@echo offを書くとうまくいったりしませんか? また、Javaコードの方で以下のようにしても実行できると思います。 Process p = Runtime.getRuntime().exec("a.bat"); InputStream in = p.getInputStream(); int b; while ((b = in.read()) != -1) { System.out.write((byte)b); } バッファがいっぱいになって、サブプロセスの出力ストリームが詰まったのが原因じゃないかと思います。

wwwwtaka
質問者

お礼

ありがとうございます!! 先頭に「@echo off」もしくは「echo off」を書くとうまくいきました。 大変助かりました。ありがとうございます。 ただ、javaコードの方は固まってしまうみたいです・・・。

その他の回答 (1)

  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.1

MS-DOSプロンプト(DOS窓)でそのbatを実行したらどうなりますか? C言語なら、sysytem()を使用したらどうなりますか?

wwwwtaka
質問者

補足

DOS窓、及びC言語では、正しく動作します・・・・。 EXECを使用する際の、プロセスとかバッファとかが影響してるんでしょうか?

関連するQ&A

  • バッチファイルコマンドについて

    毎度お世話になっております。 バッチファイルコマンドで、 わからないことがあります。 ご存知の方がおられましたら、 アドバイスを頂けますようよろしくお願い致します。 (質問内容) AAA.batファイル内からbbb.bat、ccc.batを同時にコールしたいのですが、 記述方法がわからないので教えて頂けますでしょうか。 よろしくお願い致します。

  • バッチファイルのディレクトリ内のファイル検索について

    バッチファイルのディレクトリ内のファイル検索について お世話になります。 現在カレントに6つのディレクトリとバッチがあります。 バッチを叩くと指定ディレクトリのmakeファイルというファイルを実行するようにしています。 ですが構成を変えまして、サブディレクトリのmakeファイルも実行出来るように変更したいと思っています。 どのようにすればよろしいでしょうか? 以下が現在のソースです。 @echo off setlocal enabledelayedexpansion set DIRS=libSrc clientSrc serverSrc for /d %%a in (%DIRS%) do ( cd %%a cd if EXIST makefile.mak ( make %* ) else ( if EXIST Integ.bat ( call Integ.bat %* ) ) cd ..\ ) endlocal フォルダ構成は bin clientSrc include lib libSrc serverSrc となっており、makeファイルはclientSrc、libSrc、serverSrcにあります。 そこでlibSrcだけ新たにフォルダを2つ作成し、そのフォルダの中のmakeファイルも拾えるようにしたいです。 よろしくお願いします。 bin clientSrc ---- makeファイル include lib libSrc ----|--- myLib ----- makeファイル |--- socketLib --- makeファイル serverSrc---makeファイル batファイル

  • PHPからバッチ実行

    exec('hogehoge.bat'); PHPから上記コマンドでバッチを実行すると hogehoge.bat ECHO hoge > hogehoge.log DIR \\Server1\hoge*.* > C:\hoge\hoge.log hogehoge.logにはキチンとhogeと書いてありますが hoge.logは作成されますが真っ白なままです。 NET USE F: \\Server1 ドライブに割り当てて試してみましたがダメでした。 なにかいい方法はございませんでしょうか? Win XP Apache_2.0.59 php-4.4.4

    • ベストアンサー
    • PHP
  • Windowsのバッチファイルでcallコマンド時にログを残す方法について

    お世話になっております。 Windowsのバッチファイルについての質問です。 Windowsのバッチファイル内で、さらにバッチファイルをcallコマンドに よって、呼び出しているのですが、その呼び出したバッチファイルの logを残したいのですが、実装方法が分かりません。 # UNIXのscriptコマンドのようなコマンドがあれば実装できると # 考えたのですが、存在していないようです。 callコマンドは、リダイレクトorパイプが使えないらしいので、 以下のような記述だとlogを出力することができません。 call test.bat > test.log ご存知の方がいらっしゃいましたら、ご教示下さい。 以上、よろしくお願いいたします。

  • PHPからバッチファイルの実行

    PHPのファイルから、特定のPDFファイルを印刷するコマンドが書かれたバッチファイルを実行したいと考えています。 exec(\'test.bat\');みたいな感じでやってはみたものの、Web画面が止まってしまってうまくいきませんでした。 どなたかご存知の方、ご教授ください。よろしくお願いいたします。

    • 締切済み
    • PHP
  • バッチファイルの実行方法

    Windows Server 2003で、Robocopy.exe(Resource KitToolsからインストールしたもの)の連続処理のために、下記のようなバッチファイル(.bat)を用意しました。 robocopy "D:\a" "F:\a" /E /copy:DT /NP /LOG:c:\robocopy.txt /TEE robocopy "D:\b" "F:\b" /E /copy:DT /NP /LOG+:c:\robocopy.txt /TEE .... コマンドの各行は間違っていないようです(cmd.exeに各行を打ち込んで実行すると正常に処理されます)。しかし.batをダブルクリックするとコマンドプロンプト画面内でバッチファイルの1行目がすごい勢いで流れるだけで、処理されません(コマンドプロンプトを強制終了するしかありません)。 最初は.batをダブルクリックすると正常に処理されていたのですが、急にこうなりました。なぜでしょうか? command.comから.batファイルを実行すると正常に処理されます。command.comから実行しないといけないものなのでしょうか? バッチファイルの拡張子を.batにするか、.comにするか関係があるでしょうか?

  • VBAでバッチ実行ができません

    手動では動くバッチファイルがマクロからだと動きません。 何か必要なコマンドがあるのでしょうか? よろしくお願いします。 VBA--------- Shell "C:\test.bat", vbNormalFocus test.bat--------- perl a.pl b.log c.log d.log > e.csv exit OSがXP、Excelが2003です。

  • コマンドプロンプト、バッチファイル

    解決法を探してみたのですが、見つからないのでご教授ください。 コマンドプロンプトでどんなコマンド(ipconfig,ping,etc)を入力しても 「操作可能なプログラムまたはバッチ ファイルとして認識されていません。」という警告が出るようになってしまいました。 多分、原因はJavaの勉強をしていたときに環境変数のパスをいじってしまったからだと思います。 調べていて、思ったことなのですが、カレントディレクトリにバッチファイル(.bat)というファイルが見当たりません。これがないからかなとも思っています。 コマンドプロンプトからのコマンド入力ができるように解決方法をご教授ください。

  • バッチファイルの変数引継ぎについて

    行き詰ってしまったので、どなたか知恵を授けていただければと思います。 現在、あるソフトウェアの「バッチモード」という機能を使用したバッチを作成していて、構文が > sdcmd batch ***.txt 上記のようにコマンドを羅列したテキストファイルを指定した実行コマンドになります。 sdcmd以降はソフト指定のコマンド以外は使用できず、変数設定ができない為に変数設定とログ保存を兼ねて上記コマンドを記載したバッチを > setlocal EnableDelayedExpansion > set ○=△△△ > set ■=◇◇◇ > call aaa.bat %* >> aaa.log 2>&1 という内容の呼び出しバッチを作成たのですが、テキストファイル内の変数が代入されずに 実行されてしまいます。 cmd上から直接 > setlocal EnableDelayedExpansion > set ○=△△△ > set ■=◇◇◇ > sdcmd batch ***.txt >> aaa.log 2>&1 を実行しても変数の代入は行われませんでした。 cmd上で変数とテキストファイル内のコマンドを手動実行すれば変数は解決できます。 設定した変数を、テキストファイル内の変数値に代入する方法はあるでしょうか。

  • バッチファイルにおけるコマンドの引数

    バッチファイルの中で曜日判定で処理内容を変えたいのですが DOSコマンドのdateでは曜日を出力できませんでした。 そこで、Services for UNIX 3.5をインストールし、UNIXのdateコマンドを使って曜日判定をしようとしたのですが、以下のようにエラーに なってしまいます。 ===バッチの中身== rem 曜日判定 set wk=c:\SFU\bin\date +%a IF %wk% EQU "日” call batch_1.bat  ・・・ ・・・ ====== 上記をコマンドプロンプトで実行しますと date: illegal time format usage: date [-u] [-r seconds] [+format] date [-u] -t [[[[[CC]yy]mm]dd]HH]MM[.SS] [+format] date [-u] [+format] mmddHHMM[yy] +aの使い方が誤っています。 ※ちなみコマンド単体で実行すると正常です。 c:\SFU\bin\date +%a 水

専門家に質問してみよう