[前の記事]« SET /Pの入力文字列から特殊文字の有無をチェックするには
[次の記事]for /f:空行を省略せずそのまま読み込みたい »

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

▲カテゴリー「バッチファイルの起動、引数の取得」索引へ

4台のPC中1台だけでバッチファイルがバッチファイルとして認識されない

1631.
バッチファイルとして認識されない
2007年01月28日(日) 23時29分
earl
不可解な現象になってますので、ヒントでも結構ですので教えてください。
会社で昨年12月頃に同じPCを3台、同9月頃1台(先の3台と同じシリーズで、CPUが少し上のタイプ)の合計4台のPCを購入しました。すべてWindows XP Professionalです。
1台のPC(CPUが上のPC:以降PC4とします)で5つのBATファイルを作成しました。
a.bat b.bat c.bat d.bat e.bat の5つです。
a~dのbatファイルは、それぞれの中で
call e.bat
と、e.batを呼び出しています。
上の5つのファイルを、他の3台のPCのローカルディスクにコピーをしました。
ところが、1台のPC(仮にPC1とします)でa.batだけが、call e.batで”e.batはバッチファイルとして認識できません”となってし まいます。他のb~d.batは正常にcall e.batを処理しますし、他の3台のPC上の a.batは正常に動作します。
PC1で動作させる”a.bat”のみが動作しないのです。
path等の考えられる範囲はチェックしたつもりですが、どこかに落とし穴があるはずなのですが、それがわかりません。
何か考えられることがありましたら、教えてください。
よろしくお願いします。
1635.
Re:バッチファイルとして認識されない
2007年01月29日(月) 12時28分
otn
>ところが、1台のPC(仮にPC1とします)でa.batだけが、call e.batで”e.batはバッチファイルとして認識できません”となってしまいます。

とのことですが、
(1) メッセージに間違いはありませんか?

(2) コマンドプロンプトから e.bat が存在するディレクトリで call e.bat と打つとどうなりますか?

1641.
Re:バッチファイルとして認識されない
2007年01月30日(火) 00時04分
earl
otnさん、ありがとうございます。
本日は会社で格闘していました。こちらのページを忘れてしまったので、書き込みができませんでした。


>(1) メッセージに間違いはありませんか?
メッセージには間違いありません。
”'e.bat' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。”と言う表示になります。
(今は自宅なので、正しいバッチファイル名を指定していませんが、メッセージは正しいです)

>(2) コマンドプロンプトから e.bat が存在するディレクトリで call e.bat と打つとどうなりますか?
明日、会社でやってみます。

明日はこのページを会社でも見ますので、よろしくお願いします。



1642.
Re:バッチファイルとして認識されない
2007年01月30日(火) 15時44分
earl
会社でやってみました。
まず 問題のbatファイルを含むフォルダーに
cd C:\Fairlight関係
で移動。
この中で、すべてのバッチファイルから共通で呼び出すbatファイル(質問の時にはe.batとしましたが、実際は”PCset.bat”と名前がついていますので、
call PCset.bat
と、入力。
すると正常に目的の値を返してくれます。

ほかのbatファイルに書いてあるcall PCset.batも正常に処理しますが、問題のa.batで処理をすると、PCset.batから何も返されず(エラーで何も処理されずに、batの次の行に進む)、以降の処理で目的の処理ができません。
実際の中身は以下のとおりです。
”PCset.bat”の中身
SET PC=PC1
SET DAT1=%DATE%
SET DAT2=%DAT1:~0,4%
SET DAT3=%DAT1:~5,2%
SET DAT4=%DAT1:~8,2%
SET DY=%DAT2%_%DAT3%_%DAT4%
SET DFN=%DY%_%PC%

”a.bat”の中身
Rem サーバーにコピーし、フォルダーを開く処理
ECHO off
taskkill /f /im IEXPLORE.exe
cls
Rem 環境変数をセットする
Rem 日付からフォルダー名を生成する
rem cls
call PCset.bat

Rem 処理をするかどうかの確認
echo このPCのバックアップと、サーバーにバックアップを始めますか ?

:start
   ・
   ・
   ・

で、PCset.batで返されたフォルダーを作りコピーをするのですが、フォルダー名が返されないので、処理ができません。
デバッグのためcall文の跡にpauseを入れて、echo offをやめると、
'PCset.bat' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と、表示されています。

1655.
Re:バッチファイルとして認識されない
2007年02月02日(金) 21時28分
otn
見た限り変なところは無いですが、質問文中で全角文字と半角文字を区別してらっしゃらない点からして、タイプミスとか変なコードの文字が紛れ込んでいるとかが怪しいですね。
call PCset.batをフルパスで記述したらどうでしょう。

1657.
Re:バッチファイルとして認識されない
2007年02月03日(土) 21時20分
earl
ありがとうございます。

どう見ても間違いはなさそうだし、同じbatファイルをコピーした他のPCでは正常に動作しています。
昨日発覚したのですが、call以外にも、変な動作がありました。
batファイルなのですが、あるフォルダーを一度消して、再度同じフォルダーを作っているのですが、これも元は同じファイルをコピーしたにもかかわらず、 問題のPC上では失敗をします。上のbatファイルはrmdirとmkdirではなく、delでワイルドカードを使って、中身を全部消すように変更しよう と考えています。

OSの再インストールで改善するでしょうけど、それは最終手段。
いずれにしても、今後もこのPCでは情緒不安定な動きをされる可能性が高いので、何らかの対処を考えなければと思っています。

>見た限り変なところは無いですが、質問文中で全角文字と半角文字を区別してらっしゃらない点からして、タイプミスとか変なコードの文字が紛れ込んでいるとかが怪しいですね。
これについては、本文では区別をしてませんでしたが、batファイルの中はきちんと区別をしています。

>call PCset.batをフルパスで記述したらどうでしょう。
C:\Fairlight関係\a.bat
でもだめで、
”a.bat”の中身
Rem サーバーにコピーし、フォルダーを開く処理
ECHO off
taskkill /f /im IEXPLORE.exe
cls
Rem 環境変数をセットする
Rem 日付からフォルダー名を生成する
rem cls
call C:\Fairlight関係\PCset.bat

Rem 処理をするかどうかの確認
echo このPCのバックアップと、サーバーにバックアップを始めますか ?

:start
   ・
   ・
   ・

と書いてもだめでした

1658.
Re:バッチファイルとして認識されない
2007年02月05日(月) 19時01分
ラシャン
横から失礼します。
おそらくCALLするPCset.batが見つからないのだと思いますが
例えば、a.batとb.batのCALLの前にCDとPAUSEを入れて
---------------------------------------
CD
PAUSE
CALL PCset.bat
---------------------------------------
と書き加えて実行した場合に、カレントディレクトリは同じですか?
もし違う場合、フルパスでダメだったということなので
CALLの前にそのフォルダへ移動するようにしてみては?
---------------------------------------
CD C:\Fairlight関係
CALL PCset.bat
---------------------------------------

もしくは、PCset.batが日付フォルダを作成するだけなら
---------------------------------------
for /F "tokens=1-3 delims=/ " %%a in ('date /t') do echo md %%a_%%b_%%c_!COMPUTERNAME!
---------------------------------------

という風にCALLせずにa.batだけで処理してみてはどうでしょう?

参考までに・・・
1659.
Re:バッチファイルとして認識されない
2007年02月06日(火) 00時02分
earl
>横から失礼します。
大歓迎です。ありがとうございます。

現在のところ、PC1のa.batだけが動かないので、a.batの中にPCset.batと同じ記述を追加して運用を開始しています。
とりあえず、PC1についてはmkdirも動かないことがたまにあるので近いうちにOSから入れ直すことも考えています。
明後日、4台のPCの担当が私の日なので、pauseした段階でのカレントディレクトリを見てみます。
ありがとうございました。


 
 
 


カテゴリー「バッチファイルの起動、引数の取得」索引へ

 

カテゴリー一覧

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


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

資料書籍

About

2007年01月28日 14:18に投稿されたエントリーのページです。

ひとつ前の投稿は「SET /Pの入力文字列から特殊文字の有無をチェックするには」です。

次の投稿は「for /f:空行を省略せずそのまま読み込みたい」です。

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

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