コマンドプロンプトでバッチファイルを作成する方法と実行する際の違い

このQ&Aのポイント
  • コマンドプロンプトでバッチファイルを作成し、古いバックアップディレクトリを削除する方法について解説します。
  • バッチファイルを作成しても、ダブルクリックで実行すると動作しないことがあります。コマンドプロンプト上で実行する方法との違いについても説明します。
  • もしバッチファイルが動作しない場合は、保存する際の拡張子やパスに問題があるかもしれません。ご確認ください。
回答を見る
  • ベストアンサー

コマンドプロンプトで.batファイルを作っています。

古いバックアップディレクトリを削除するバッチファイルを作りたいです。 cd /d e:\fileDir REM:【最終のディレクトリを削除】 for /F %F in ('dir /b /o:-d') do set fname=%F rmdir /s /q %fname%  をコマンドプロンプト画面に貼り付ければ上手く動作しますが*.batと名前を付けて保存したものをダブルクリックでは全く動作しません。  コマンドプロンプト上で実行するのとバッチファイルで実行することの違いについて調べてみましたがなかなか動作するものになりません。  どなたかご教示いただけないでしょうか    

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

  • ベストアンサー
  • PXU10652
  • ベストアンサー率38% (777/1993)
回答No.2

 バッチファイルをWindows上で実行すれば、コマンドプロンプトの画面が開き、実行されます。  コマンドプロンプトの画面が、プロパティーで最小化の指定がされていると、画面が表示されずに実行されてしまいます(一瞬、タスクバーにコマンドプロンプトが表示されますが)。また、処理が一瞬で終わるものは、結果が表示されずにコマンドプロンプトが閉じたり、真っ黒な画面のままになる場合もあります。  このような場合、バッチファイルの最後に「PAUSE」行を付けておけば、実行結果を確認できますし、本当に動作したのか、どんなエラーが発生しているのかが確認できます。正常動作が確認できれば、「PAUSE」文を削除するか、頭に「REM 」を付けて、コメントアウトすればよいと思います。

piko_san
質問者

お礼

有難うございます。 バッチファイル実行では画面が一瞬で閉じてしまうのでデバックのつもりでコマンドプロンプトに貼り付けて動作確認していました。 PAUSEで止めれるのですね。有難うございました。 ↓←←コマンドプロンプト ↓↓←バッチファイル ○×for /F %F in ('dir /b /o:-d') do set fname=%F ×○for /F %%F in ('dir /b /o:-d') do set fname=%%F で動作しました。 今後の作業が楽になりそうです。有難うございました。

その他の回答 (1)

noname#185422
noname#185422
回答No.1

はじめまして、よろしくお願い致します。 バッチファイルを作成してもDOS上ではできますが。 ダブルクリック(win上)できません。 autoexec.・・・ファイルを作らないとできません。 自動で動作させるファイルです。

piko_san
質問者

お礼

ありがとうございます。 現在バックアップは*.batを作成しウィンドウズXPのタスクに登録し正常動作しています。 また*.batダブルクリックでも動作しています。 なのでスクリプトの書き方がコマンドプロンプトに直書きする場合とbatファイル用とで何か違いそのせいで動かないのかなと思うのです。 こちらの認識違いであれば申し訳ないです。

関連するQ&A

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

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

  • コマンドプロンプトで最新のファイル以外を削除

    コマンドプロンプトで最新のファイルを2つ残してそれ以外を削除するバッチを作りましたがうまくいきません。お詳しい方、どこが間違っているのかアドバイスお願いいたします。 set /a cnt=0 for /f %%A in ('dir /B /O-D c:\test1\*.log') do ( call :chk %%A ) :chk REM カウンタが2以上なら削除 if %cnt% GEQ 2 ( echo %1 ) set /a cnt+=1

  • batファイル実行後コマンドプロンプト消さない方法

    batファイルをダブルクリックして コマンドプロンプト上で処理を実行した場合、 終了後にコマンドプロンプト画面がすぐ消えますが、 消さない方法はありますでしょうか。

  • Batファイルを実行した際のコマンドプロンプト

    Batファイルを実行した際のコマンドプロンプトの表示をさせたくないのですが、よい方法はありますでしょうか? ご教授お願いします。

  • batファイルを実行してコマンドプロンプトを開き自動的にコマンドを入力させたい

    batファイルを実行すると、コマンドプロンプトが開かれ、 そのときにすでに「nbtstat -a」と入力された状態になるbatファイルを作ろうとしています。 メモ帳から普通に「nbtstat -a」と入力し保存して実行しましたが、一瞬コマンドプロンプトの画面が表示され、すぐに閉じてしまいます。 ためしに「nbtstat -a %computername%」と入力して保存し、実行しましたが、結果は同じです。 何かいい方法はありませんか?

  • コマンドプロンプトでのフォルダ削除

    みなさん、お世話になっています。 さて、質問ですがバッチコマンドでファイルをフォルダごと 削除したいと思っています。 DELではフォルダの中にファイルが残っていると消せないし RMDIRでも、同じでした。 以下のコマンドで試してみました。 OSはXP Proです。 for /f "skip=5" %%f in ('dir /b /o-n') do RMDIR %%f 何か他に削除する方法がありますでしょうか。 よろしくお願いいたします。

  • コマンドプロンプトで

    コマンドプロンプトで dir > list.txt と書いたbatファイルを作成し実行すると、中にあるフォルダ・ファイルの一覧ができますが、中にあるフォルダ名のフォルダ・ファイル名までは取得することができません。 一番下フォルダのファイル名まで取得する方法はありますでしょうか? よろしくお願いします。

  • バッチファイル内のコマンドプロンプトを1つずつ実行するにはどうしたらよいでしょうか?

    はじめまして。 ご質問なんですが、バッチファイル内のコマンドプロンプトを1つずつ実行するにはどうしたらよいでしょうか? 以下にバッチファイルの中身を記述します。 kidou.bat ------------------------------------------------------- start /D "C:\Program Files\Mozilla Firefox" firefox start /D "C:\Program Files\Mozilla Firefox" firefox ------------------------------------------------------- 1つ目のfirefoxが起動してから、 2つ目のfirefoxが起動する、という形です。 わかりにくくて申し訳ないですが、よろしくお願いします。

  • dsmoveコマンドをBATファイルで実行したい

    数百回のdsmoveコマンドをBATファイルで一括処理したいのですが、 うまくいかず困っています。良い方法があれば教えてください。 コマンドは以下のような感じですが、コピペしてコマンドプロンプトから実行すると 正常に動作するので、コマンド自体は正しいはずです。 dsmove "CN=test1,OU=Office,OU=test,DC=test,DC=kaisya,DC=co,DC=jp" -newname "test001" dsmoveが、バッチからでは実行できないということは無いですよね?

  • コマンドプロンプトからのcmd実行について

    現在VBSでオブジェクトを定義しrunを使いcmd経由で他のバッチ・VBS・ソフトの起動をやっています。 ふととあるパスが実行できませんでした。 そこで別途個別にコマンドプロンプトだけで実行してみましたがやはりうまく処理できません。 [echo.bat] echo test pause [コマンドプロンプト] rem その1 cmd /K c:\temp\a\echo.bat rem その2 cmd /K C:\Temp\(a\echo.bat その1の結果 C:>cmd /K C:\Temp\a\echo.bat C:>echo test test C:>pause 続行するには何かキーを押してください . . . その2の結果 C:>cmd /K C:\Temp\(a\echo.bat 'C:\Temp\' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 C:> 上記のように1は正常に処理され2はうまく処理されません。 解決策をひたすら検索したのですが見つからず なんとなくだいたい分かったのが一部『(』や『)』や『&』や『@』や『^』などの記号が混じるとどうやらうまく処理できないようです。 なぜ処理できないのか?と、如何すればこれを回避して実行できるか分かる方がいればよろしくお願いします。 備考: (現状の緊急回避として記号のあるパスは記号のないパスから経由batを生成する方法を思いつきましたが自分で馬鹿だと思います) (経由バッチの中身が"C:\Temp\(a\echo.bat"ならば実行できるから) また、cmd /K "C:\Temp\(a\echo.bat" では実行できませんでした。 OSはXPです。コマンドプロンプトヴァージョンは(Microsoft Windows XP [Version 5.1.2600])です

専門家に質問してみよう