こんにちは。
バッチファイルとコマンドプロンプトについて、少々お伺いしたいことがあります。
まず、コマンドプロンプトで以下のコマンドを打ち込んでみたところ、すべて正常に実行することができました。
ping [example.com] > result.txt
tracert [example.com] >> tr_result.txt
ipconfig /all > ipc_result.txt
次に、各コマンドをテキストファイルに書き込んで、それぞれ
"p_test.bat" # 内容は ping コマンド
"tr_test.bat" # 内容は tracert コマンド
"ipc_test.bat" # 内容は ipconfig コマンド
と命名しデスクトップに配置、ダブルクリックで実行してみました。
すると、このうち正常に実行(結果をテキストファイルに出力)されたのは
tr_test.bat
のみでした。
ここで質問なのですが、なぜこのような違い(バッチファイルにすると実行できるものとできないものに分かれる)が起こるのでしょうか?
バッチファイルの作り方やとコマンドプロンプトについて調べてみましたが、説明を見つけることが出来ませんでした。
この辺の理論について詳しい方がおりましたら、ご教示頂きたく思います。
ちなみに、OS は Windows XP SP2 です。
よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
状況がつかめません。
DOS窓で実行する場合と、バッチファイルにして実行する場合の違いは、環境変数の指定の違いくらいな物です。この場合、「実行ができなかった」「実行したが、途中で止まっている(ハング状態)」「実行したが、エラーで終わっている」などがあります。これらを説明する必要があります(解明する必要がある)。
>このうち正常に実行(結果をテキストファイルに出力)されたのは
この辺の内容を詳細に書きましょう。
1.実行されない場合、DOS窓が起動してこない場合は、拡張子を確認してみましょう。よくあるのが、
p_test.bat.txt
となっている場合があります。また、文字がスペースが全角になっている場合。タブが入っている場合。
2.”>”でリダイレクトをした場合、出力されるものが無くてもファイルは作成されます(0バイトのファイルが作成される場合も)。ファイルは作成されなかったのでしょうか、それとも0バイトのファイルが作成されましたか?
3.もし、ファイルが作成されていて、中身が、0バイト(何も無い状態)であれば、まだ出力前で、コマンドがハング状態になっている。そこで例えば、起動してきたDOS窓を終了させると、0バイトのファイルができる。
4.同じくファイルができているが、中身がエラーの内容がある。これをある人に言わせると「正常に実行していない」と言うことになります。そこに書かれている内容を記載しましょう。じゃないと、何でエラーになっているのか、だれにも分かりません。
このように、上記でもパソコンは状況に応じた「正常に実行」が行われています。「正常に実行」と言っているが、あなたにとっての「正常に実行」を詳細に説明しないと、わかりません。
それと、バッチファイルだけでなくプログラミングの初歩の初歩の失敗に、半角スペースと全角スペースを間違って入力する事があります。プログラム(バッチファイルのようなスクリプトも)は全て半角のスペースですのできおつけましょう。タブもだめですね。キャラクター文字(< | ? など)も全部半角です。
それと、コマンドがメッセージを出力する場合、「標準出力」と「エラー出力」などがあります。これは、出力先が違っています。よく、終了コードが0とか1とか"errorlebel"で拾える物がありますが、そのコードがエラーコード(1以上など)で終わる場合、「エラー出力」に出力されます。
どういうことかと言うと”>”でファイルにメッセージをリダイレクトした場合、通常コマンドが「標準出力」に出力したメッセージのみがファイルにリダイレクトされます。「エラー出力」に出力されるものを、リダイレクトする場合は、
ping [example.com] > result.txt 2>&1
すればできます。エクスプローラーのヘルプの検索で”リダイレクト”で検索してください。詳細がでます。また、”バッチファイル”で概略がでます。
>バッチファイルの作り方やとコマンドプロンプトについて
バッチファイルと呼ばれているものは、CMD.exe と言うコマンドが仮想的に作り出したDOS環境で、DOSコマンドとコマンドライン実行用ユーテリティー(pingなど)で、構成されています。なんで、基本的には、MS-DOSの関連本やサイトをみればサンプルなどがあります。
No.1
- 回答日時:
実際に動いていないのか?エラーメッセージがでてないか?を調べるために、各バッチファイルの最後に pause を入れてみてはどうでしょうか?
例えば、p_test.batだったら
ping [example.com] > result.txt
pause
という感じです。
「続行するには何かキーを押してください..」とでて、コマンドプロンプトが表示されたままになるので、実行時のエラーメッセージなどを確認できます。
それと、tracert [example.com] >> tr_result.txt だけは 「>>」 で追加書き込みになっています。
もしかして、もともとあった動いた時の出力結果に、失敗した内容(=空)を追加した状態(=もともとの出力結果)を見て、正常に実行された、と思ってませんか?
一旦、tr_result.txtを削除するなりリネームするなりしても動作しますか?
tr_test.batだけ動くというのがちょっとわからないので。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- その他(コンピューター・テクノロジー) (コマンドプロンプト)コマンドプロンプトのactiveについて 2 2022/07/16 17:21
- オープンソース コマンドプロンプトのコードの実行方法を教えて欲しい 2 2022/11/26 20:45
- その他(プログラミング・Web制作) DOSコマンドに詳しい方、お知恵をお貸しください 5 2022/11/04 20:55
- C言語・C++・C# exeファイルが作れない(windows10) 6 2022/08/13 08:47
- Windows 10 VirtualBox 7のゲストOSでの物理HDDパーティションのマウント方法 2 2023/05/04 13:01
- Excel(エクセル) パスワード付きExcelブックについて 4 2022/06/02 21:34
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- Windows 10 バッチファイルでのエクスプローラー終了 1 2022/05/30 14:32
- ノートパソコン cipher でデータが消えない 4 2022/06/01 14:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シャットダウン時に自動ファイ...
-
システム環境変数の削除の自動...
-
NAS上のBATファイル実行
-
バッチファイルで他のバッチフ...
-
別のPCをバッチファイルを使用...
-
【VBA】写真の縦横比を変えずに...
-
検索したファイルの場所を調べ...
-
常に「すべての列のサイズを自...
-
ファイル並び順がバラバラで困...
-
タスクスケジューラで指定フォ...
-
VB.net 任意の例外を発生させ...
-
レジストリの格納場所
-
新規作成でなぜフォルダだけ?
-
VBAで、㉑という数値が、正しく...
-
google Drive 容量を減らせない...
-
System32内のファイルを書き換...
-
Not kind:Folders
-
Cドライブにconfig msiというフ...
-
フォルダのプロパティでセキュ...
-
エクセルを立ち上げるとBook2が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
シャットダウン時に自動ファイ...
-
NAS上のBATファイル実行
-
バッチファイルで実行できたり...
-
コマンドプロンプトでファイル...
-
バッチファイルで他のバッチフ...
-
windowsXPのBEEP音を任意の音声...
-
ImageMagickでのバッチファイル...
-
システム環境変数の削除の自動...
-
バッチファイルでアクセス権無...
-
書き込み禁止動画ファイルの解...
-
別のPCをバッチファイルを使用...
-
ファイル名のカッコの位置を一...
-
batファイルからPCをシャットダ...
-
右クリックで新規作成するテキ...
-
バッチファイルでの情報収集
-
exeファイルをコマンドで終了さ...
-
ファイル名を全て同じ名前にす...
-
DOSのUSコマンドを含む処理をを...
-
batファイルの中身を確認する方法
-
ファイルの作成日時について
おすすめ情報