• 締切済み

実行ファイルからバッチファイルを作成、そのバッチファイルが実行できない

環境はWindowsXPPro+gccです Cの実行ファイルにjavaファイルを引数で渡し そのファイル名に合ったバッチファイルを作成するプログラムで 作成後エクスプローラからバッチファイルを実行しても 「指定されたデバイス、パス、またはファイルにアクセスできません。アクセス許可がない可能性があります。」 と出てバッチを実行できません しかし、DOSを開き、そのパスまで行きバッチファイルを実行するか、 このバッチファイルをコピーし実行するときちんと実行されます。 なぜでしょうか? なにかお気づきする点がありましたら指摘お願いします。 ※文字数制限で宣言省いています int main(int argc,char *argv[]) { strcpy(fpath,argv[1]); flen=strlen(fpath); strncat(ftype,&fpath[flen-5],5); if(strcmp(ftype,".java")!=0){ printf("Don'tjavafiletype!!\n"); printf("%s",ftype); return0; } for(i=0;i<flen;i++){ if(fpath[i]=='\\'){ flast=i; } } strncat(fname,&fpath[flast+1],flen-flast-6); strncat(fpath2,fpath,flen-5-strlen(fname)); sprintf(html,"<html>\n" "<body>\n" "<appletcode=\"%s.class\" width=\"200\" height=\"200\"></applet>\n" "</body>\n" "</html>\n",fname); sprintf(bat,"cd%s\n" "javac %s.java\n" "appletviewer %s.html\n",fpath2,fname,fname); strcpy(fhtml,fpath2); strcat(fhtml,fname); strcat(fhtml,".html"); fn=fopen(fhtml,"w"); flen=strlen(html); for(i=0;i<flen;i++){ fputc(html[i],fn); } fclose(fn); strcpy(fbat,fpath2); strcat(fbat,fname); strcat(fbat,".bat"); fn2=fopen(fbat,"w"); flen=strlen(bat); for(i=0;i<flen;i++){ fputc(bat[i],fn); } fclose(fn2); return0; }

みんなの回答

  • clsdi99
  • ベストアンサー率63% (31/49)
回答No.3

私も以前作成したバッチが動かなくて困ったことがあります。そのとき分かったのはファイルの権限でした。 ファイルの権限を変えたくとも2000のようなダイアログを見つけることができずその時はあきらめてしまいましたが・・・ その辺をしらべてみるのがよろしいのではないでしょうか。

ackapapa
質問者

補足

返信ありがとうございます。 ファイルの権限ですか・・・ 情報ありがとうございます。 調べたところ 「runas」というCUIの命令でなんとかなりそうな感じです。http://itpro.nikkeibp.co.jp/free/NT/WinKeyWord/20040805/1/runas.shtml 現在試せる環境でないのでなんともいえませんが これをためしに使ってみたいと思います。 その前にバッチファイルの権限が誰にあるのかを調べないといけませんが...

  • yasuch
  • ベストアンサー率41% (27/65)
回答No.2

No1です すいません、わけわかんないこと書いてしまいました。

  • yasuch
  • ベストアンサー率41% (27/65)
回答No.1

fclose(fbat); してないからではないですか?