スクリプト実行できません。教えて!

このQ&Aのポイント
  • スクリプトを勉強中です。技術的な疑問やエラーについて教えてください。
  • Microsoftのドキュメントに記載されているスクリプトが正常に表示されない問題が発生しています。原因を教えてください。
  • メモ帳にスクリプトを書き込んで保存し、コマンドプロンプトで実行した結果、見つからないとエラーが表示されます。何が問題なのでしょうか?
回答を見る
  • ベストアンサー

このスクリプト実行できません。教えて!

スクリプトを勉強中です。 https://technet.microsoft.com/ja-jp/scriptcenter/ff519411.aspx#EAE初心者 上のサイトの最初に記載のある試供ですが上手く表示されません。どうしてでしょうか? 試供 ------------- Wscript.echo "My very first script."そうです。この 1 行がスクリプトです。これは非常に単純なスクリプトであり、たいていのスクリプトはこれより長くなりますが、これもスクリプトです。ここで、この 1 行をどのように処理すればよいのかという疑問がわいてきます。それは非常に単純です。 メモ帳を開きます。 ブラウザからスクリプトをコピーし、メモ帳に貼り付けます。 test.vbs のように、拡張子 .vbs を付けてスクリプトを保存します。 ここでコマンド ウィンドウを開き、ファイルを保存したフォルダに移動し、次のように入力します。 cscript test.vbs前述のスクリプトでこの操作を行った場合、出力は次のようになります。 My very first script. -------------- 私は メモ帳にwscript.echo"wy very first script"を記載し、 保存はファイル名、"test.vbs"とし、 保存先は新しいフォルダ名、testに保存しました。 そのtestのフォルダを開き、そこでコマンドプロンプトも開きcscript test.vbsを入力したのですが、見つかりませんと記載されます。 何が悪いのでしょうか? 宜しくお願いします。

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8514/19356)
回答No.2

>そのtestのフォルダを開き、そこでコマンドプロンプトも開きcscript test.vbsを入力した これが悪い。 「testフォルダを開け」とは書いてないですよ。 「ファイルを保存したフォルダに移動し」って書いてますよね? コマンドプロンプトを開いたら、黒い背景に白い文字の画面で Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:¥Users¥貴方がPCにログインしているユーザー名> と言う表示になりますよね? この状態は「ファイルを保存したフォルダとは、異なるフォルダに居る状態」です。 ここで、試しに、コマンドプロンプトで「CD」と打ってみて下さい。 Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:¥Users¥貴方がPCにログインしているユーザー名>CD C:¥Users¥貴方がPCにログインしているユーザー名 C:¥Users¥貴方がPCにログインしているユーザー名> と言う画面になった筈です。 次に「CD C:¥」と打ってみて下さい。 Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:¥Users¥貴方がPCにログインしているユーザー名>CD C:¥Users¥貴方がPCにログインしているユーザー名 C:¥Users¥貴方がPCにログインしているユーザー名>CD C:¥ C:¥> 「CD」と言うコマンドは「コマンドプロンプトが現在居るフォルダを表示したり、変更したりするコマンド」なのです。 上記の状態は「コマンドプロンプトがC:¥に移動した状態」なのです。 解説ページに書いてある「ファイルを保存したフォルダに移動」ってのは「コマンドプロンプトの中でCDコマンドを使って、コマンドプロンプトの現在位置を、ファイルを保存したフォルダに移動しなさい」って意味なのです。 エクスプローラーやその他のウィンドウで何をやっても「コマンドプロンプトは移動しない」のです。 では、実際に「移動」してみましょう。 貴方がファイルを保存したフォルダの場所を、ここでは「D:¥vbs¥test¥」と仮定します。 現在、コマンドプロンプトの位置は「C:¥」になっています。これは「Cドライブ」の「¥」の位置を意味します。 まず、ドライブをCからDに変えないといけませんから、コマンドプロンプトで「D:」と入力します(入力したらEnterキーを忘れずに) Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:¥Users¥貴方がPCにログインしているユーザー名>CD C:¥Users¥貴方がPCにログインしているユーザー名 C:¥Users¥貴方がPCにログインしているユーザー名>CD C:¥ C:¥>D: D:¥> これで、コマンドプロンプトの位置が「Dドライブ」の「¥」に変わりました(貴方がファイルを保存した場所が「Cドライブ」であれば、この作業は要りません) 次に「¥vbs¥test」に移動します。「CD ¥vbs¥test」と入力して下さい。 Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:¥Users¥貴方がPCにログインしているユーザー名>CD C:¥Users¥貴方がPCにログインしているユーザー名 C:¥Users¥貴方がPCにログインしているユーザー名>CD C:¥ C:¥>D: D:¥>CD ¥vbs¥test D:¥vbs¥test> ここで気付いたかと思いますが、コマンドプロンプトの「カーソルが点滅している場所の左に表示されているもの」が「現在のコマンドプロンプトの位置」なのです。 移動が成功していれば、ここのフォルダに「test.vbs」が存在している筈です。 フォルダの中に、どんなファイルが入っているか確認してみましょう。 その確認に使うのが「DIR」というコマンドです。さっそく「DIR」と入力してみましょう。 Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:¥Users¥貴方がPCにログインしているユーザー名>CD C:¥Users¥貴方がPCにログインしているユーザー名 C:¥Users¥貴方がPCにログインしているユーザー名>CD C:¥ C:¥>D: D:¥>CD ¥vbs¥test D:¥vbs¥test>DIR  ドライブ D のボリューム ラベルは ****** です  ボリューム シリアル番号は ****-**** です  D:¥vbs¥test のディレクトリ 2015/01/28 17:01  <DIR>    . 2015/01/28 17:01  <DIR>    .. 2015/01/28 16:59       35 test.vbs      1 個のファイル         35 バイト      2 個のディレクトリ ???,???,???,??? バイトの空き領域 D:¥vbs¥test> このような表示になった筈です。 これは「このフォルダに、2015年1月28日の16時59分に作成された、大きさ35バイトの、test.vbsと言うファイルが1つありますよ」ってのを意味しています。 つまり「解説書にあるとおり、コマンドプロンプトを移動する事ができた」と言う事です。 では、実際にスクリプトを実行してみましょう。コマンドプロンプトに「cscript test.vbs」と入力します。 Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:¥Users¥貴方がPCにログインしているユーザー名>CD C:¥Users¥貴方がPCにログインしているユーザー名 C:¥Users¥貴方がPCにログインしているユーザー名>CD C:¥ C:¥>D: D:¥>CD ¥vbs¥test D:¥vbs¥test>DIR  ドライブ D のボリューム ラベルは ****** です  ボリューム シリアル番号は ****-**** です  D:¥vbs¥test のディレクトリ 2015/01/28 17:01  <DIR>    . 2015/01/28 17:01  <DIR>    .. 2015/01/28 16:59       35 test.vbs      1 個のファイル         35 バイト      2 個のディレクトリ ???,???,???,??? バイトの空き領域 D:¥vbs¥test>cscript test.vbs Microsoft (R) Windows Script Host Version 5.8 Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. My very first script. D:¥vbs¥test> どうですか?うまく行きましたか?上記の通りに「CDコマンド」を使えば、上手く行く筈です。

kfjbgut
質問者

補足

初心者には参考書のように解りやすい文です。 ですが、リンクで紹介されているものより可也複雑なようです・・ そもそもコマンド ウィンドウというのは、コマンドプロンプトではないのでしょうか? そこから間違ってるんでしょうかね?

その他の回答 (1)

  • no_account
  • ベストアンサー率45% (1661/3618)
回答No.1

>見つかりませんと記載されます。 普通に「test.vbs」をダブルクリックした方が早いんじゃない? コマンドプロンプトから実行するなら「CD」コマンドで「test.vbs」の有るフォルダにカレントディレクトリを移動してから実行するか、もしくは「test.vbs」までのフルパスの(C:\xxx\yyy\zzz\test.vbs)でコマンドを入力する必要が有ります

kfjbgut
質問者

補足

test.vbsダブルクリックしても「エラー」です。 後の説明は私には難しい話です

関連するQ&A

  • CScript vbsファイル実行 途中で止めたい

    Cscript でVBSファイルを実行するとコマンドプロンプトの画面が立ち上がって処理がはじまりますが、 実行中にEnterキーをおさないと次の処理にいかないように、プログラムを書きたいのですが、 書き方わかる方いらっしゃいましたら、教えてください。Enterキーでなくても構いません。 例えばaaa.vbsの中で、大きく二つ処理があって、(1)の処理→(2)の処理の順番だった時に (1)の処理→(コマンドプロンプト上で)止める、自分でなにかボタン押す→(2)の処理みたいな感じにしたいと思っています。 自分が試したのが、以下です、駄目でした。 WScript.StdInを使ったのですが、これを一度使った後に、Wscript.Echoを使うと、 次のWScript.StdInが使えなくて意味がありませんでした。 WScript.StdIn(入力表示されてとまった) → Wscript.Echo "テスト" →WScript.StdIn(入力表示なく、とまらない)

  • WSH(Windows Script Host)のデバックはどの様にするのですが。?

    WSH(Windows Script Host)をデバックしたいのでいろいろ調べて Micrsoft Script Debaggerをインストールしました。 そして、コマンドプロンプトでstop行入りのhoge.vbsに対して、 「cscript.exe //X C:\hoge.vbs」及び「wscript.exe //X C:\hoge.vbs」を 実効しましたがデバッガは起動しませんでした。 (Micrsoft Script Debaggerの単独起動は確認済み) 他の方法でも結構ですので、皆さんのWSH(Windows Script Host)のデバックの 仕方を教えて下さい。 では、宜しくお願いします。

  • 疑わしいスクリプトって何ですか

    ウイルスセキュリティZEROを使用しています。 あるソフトをインストールしようとしたら 警告:疑わしいスクリプトの活動 プログラム:wscript.exe パス:d: スクリプト:runcheck.vbs コマンド:GetFile と出てきました。どう対応したらいいのでしょうか?とりあえず終了をクリックしましたが。

  • VBscriptで「改行」と「"」を置換させる

    VBスクリプトを使ってファイルを置換したいと考えています。 以下のVBSファイルとコマンドを使って、置換することはできました。 が、置換対象が「改行」と「"」の場合、エラーとなって置換できません。 どうすればいいのでしょうか。 よろしくおねがいします。 ********コマンド******** (1)cscript replace.vbs "C:\test.txt" "Jim" "Jane" (2)cscript replace.vbs "C:\test.txt" ""_\n" "a_test" ********VBSファイル(replace.vbs)******** Const ForReading = 1 Const ForWriting = 2 strFileName = Wscript.Arguments(0) strOldText = Wscript.Arguments(1) strNewText = Wscript.Arguments(2) Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile(strFileName, ForReading) strText = objFile.ReadAll objFile.Close strNewText = Replace(strText, strOldText, strNewText) Set objFile = objFSO.OpenTextFile(strFileName, ForWriting) objFile.WriteLine strNewText objFile.Close (1)のコマンドを実行すると、 「Jim」は「Jane」に置換されますが、 (2)のコマンドを実行すると、エラーになり置換されません。 エラーメッセージ: 「Microsoft VBScript 実行時エラー: インデックスが有効範囲にありません。」 よろしくおねがいします。

  • vbsの保存方法が分からない

    Wscript.StdOut.Write "Height(m) = " H = WScript.StdIn.ReadLine Wscript.StdOut.Write "Weight(kg) = " W = WScript.StdIn.ReadLine BMI = W / (H * H) Wscript.StdOut.Write "BMI = " & BMI & vbLf BMIの上記コードをコマンドプロンプトで書き込み practice に保存しようとすると なぜか bmi とだけ表記されて本のような bmi.vbs にならない。 従い、これを cscript.bmi.vbs で実行しようとエンターすると スクリプト C: ¥practice¥bmi.vbs 行:1 文字:1 コード:80070006 ソース:(null) となり、実行できない。 practice に保存するとき、 ファイル名 の蘭に *.txt を消して bmi.vbs と記入している。これが間違いですか?

  • 改行コードについて vbNewLine

    windows2000,xpで以下のコマンドをリダイレクトして、 result.txtをバイナリエディタで開くと、コードが異なるのですが何故なのでしょうか? windows2000で行うと、0d0d0aとなり、xpで行うと、0d0aとなります。 いったいどうしてなのでしょうか?? sample.bat cscript //nologo sample.vbs >result.txt sample.vbs WScript.Echo vbNewLine

  • Excelマクロ戻り値をバッチファイルで取得したい

    下記のように、Windowsのコマンドプロンプトから バッチファイル(test.bat)を実行して、 バッチファイルの中から、 VBスクリプトファイル(test.vbs)を実行して、 VBスクリプトファイルの中から、 Excelブック(Book1.xlsm)の中の main()というマクロを実行させていますが、 以下のことがよく分からないので教えてください。 (問1) Excelマクロmain()の戻り値(result)を、    VBスクリプトファイル(test.vbs)の中で    利用したいのですが、Excelマクロからの    戻り値を取得する方法がよく分かりません。    例えば、WScript.Echoでresultの値を表示するには、    どのように記述すればよいのでしょうか。 (問2) Excelマクロmain()の戻り値(result)を、    バッチファイル(test.bat)の中で    利用したいのですが、VBスクリプトからの    戻り値を取得する方法がよく分かりません。    例えば、echoでresultの値を表示するには、    どのように記述すればよいのでしょうか。 よろしくお願いします。 ---test.bat--------------------------------------- cscript C:\test\test.vbs /A:"C:\test\Book1.xlsm" /B:"main" (ここでechoなどでresultの値を表示したい) -------------------------------------------------- ---test.vbs--------------------------------------- Dim oApp Set oApp = CreateObject("Excel.Application") oApp.Visible = False Set objParm = WScript.Arguments.Named oApp.Workbooks.Open objParm("A") oApp.Run objParm("B") oApp.DisplayAlerts = False oApp.Quit oApp.DisplayAlerts = True (ここでWScript.Echoなどでresultの値を表示したい) -------------------------------------------------- ---Main() (Excelマクロ)--------------------------- Function main() As Integer (処理)  main=result End Function --------------------------------------------------

  • VBSでフォルダ、ファイル作成時のエラーコード

    フォルダ、ファイルが存在しないとき、作成するスクリプトをVBSで作成していますが、疑問点があるのでご教示ください。 objFSO.CreateFolder、objFSO.CreateTextFileを実行が、正常に行われた場合、 Err.Numberに0がセットされると思っていましたが、実際は違っていました。 objFSO.CreateFolderでフォルダが作成される場合、Err.Numberに13が返されます。 objFSO.CreateTextFileでファイルが作成される場合、Err.Numberに438が返されます。 このスクリプトを実行後、フォルダ、ファイルが存在しない場合、作成されることも確認しています。 フォルダ作成後、作成されたフォルダに対して、ファイルの作成/データの書き込みのアクセス権を拒否にすると返されるErr.numberに70がセットされることも確認しています。 なぜ、フォルダ、ファイルが作成された場合、0が返されないのかご存知の方がいらっしゃいましたらご教示ください。 また、その情報が記載されている書籍およびサイトがあれば、お教えいただければ、幸いです。 Option Explicit Dim objFSO Dim objFile Const strFolderName = "C:\VBS" Const strFileName = "C:\VBS\test.txt" On Error Resume Next Set objFSO = CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then WScript.Echo "FSOオブジェクトを作成しました" Else WScript.Echo "FSOオブジェクトを作成できませんでした" WScript.Quit(1) End If If objFSO.FolderExists(strFolderName) Then WScript.Echo "フォルダが見つかりました" Else WScript.Echo "フォルダが見つかりませんでした" If objFSO.CreateFolder(strFolderName) Then If Err.Number = 13 Then WScript.Echo "フォルダを作成しました" Else WScript.Echo "フォルダを作成できませんでした" WScript.Quit(1) End If End If End If If objFSO.FileExists(strFileName) Then WScript.Echo "ファイルが見つかりました" Else Script.Echo "ファイルが見つかりませんでした" If objFSO.CreateTextFile(strFileName) Then If Err.number = 438 Then WScript.Echo "ファイルを作成しました" Else WScript.Echo "ファイルを作成できませんでした" WScript.Quit(1) End If End If End If

  • Stdinの使い方

    環境はWindowsXP SP2です。 標準入力から一行の入力を待つプログラムAが有ります。 それをWSHスクリプトBから入力させてやりたいです。 仮に、そのAを <A.vbs> s = WScript.Stdin.Readline WScript.Echo "#" & s とします。問題なく動作します。 そしてはBは <B.js> var WshShell = WScript.CreateObject("WScript.Shell"); var oExec = WshShell.Exec("cscript a.vbs"); oExec.StrIn.Write("abcdef"); としました。しかし Microsoft JScript runtime error: 'oExec.StrIn' is null or not an object なるエラーで失敗します。 どうしてでしょうか。

  • WSHスクリプトでブラウザ更新

    教えてください。 WSHスクリプトでブラウザの更新をF5ではなくてControl + Rしたいのです。 Set WshShell = WScript.CreateObject("WScript.Shell") WScript.Sleep 2000 WshShell.AppActivate "テスト" WScript.Sleep 2000 WshShell.SendKeys "^R" WScript.Sleep 2000 WScript.Echo "終了" 最初の一回目の実行時はできるのですが、それ以降更新してくれません。 よろしくお願いいたします。

専門家に質問してみよう