WSH(Jscript)でファイル一覧を取得する方法

このQ&Aのポイント
  • WSH初心者の方がファイル一覧を取得する方法を知りたいです。現在のスクリプトでは一覧を表示できているが、配列として取り出すことができません。
  • スクリプトを修正する必要があります。配列にファイル名を格納する方法を説明します。
  • 修正方法: スクリプトの処理中にファイル名を配列に格納するコードを追加します。具体的な修正手順を以下に示します。
回答を見る
  • ベストアンサー

WSH(Jscript)でファイル一覧

初めまして。 WSH初心者の者です。 ファイル一覧についてご質問があります。 下記のようなスクリプト(.js)を作成したいと思っています。 「D:\\test」の中身 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt これらをWSHで一覧(コレクション)として取得し、 配列のように test[0] = "1.txt"; test[1] = "2.txt"; test[2] = "3.txt"; test[3] = "4.txt"; test[4] = "5.txt"; test[5] = "6.txt"; 別々に取り出したいと思っております。 現状リファレンス等を参考に下記のような記述をしてみました。 ※ほとんどリファレンス通りです;汗 var fso = new ActiveXObject("Scripting.FileSystemObject"); var oFolder = fso.GetFolder("D:\\test"); var oMessage = ""; var oEFiles = new Enumerator(oFolder.Files); for( ; !oEFiles.atEnd(); oEFiles.moveNext()) { var oFiles_name = oEFiles.item(); oMessage += oEFiles.item().Name + "\n"; } WScript.Echo(oMessage); これで実行すると Windows Script Host 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt と表示され、できた!と思っていたのですが、 一つ一つ配列で取り出そうと、 WScript.Echo(oMessage[0]); と足すと、何も入っていない状態になってしまいます。 この場合、どの様に修正、追加すればいいのかわからず、 迷っています。 (根本から使い方を間違っている?) もしお分かりの方がいらっしゃいましたら、 ご教授お願い致します。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

oMessageが配列なら、 >var oMessage = ""; これはないでしょ・・・ ざっと書くとこんな感じ? var fso = new ActiveXObject("Scripting.FileSystemObject"); var oFolder = fso.GetFolder("D:\\test"); var oMessage = new Array(); var oEFiles = new Enumerator(oFolder.Files); while(!oEFiles.atEnd()){ oMessage.push( oEFiles.item().Name ); oEFiles.moveNext(); } WScript.Echo(oMessage[0]);

take_tom
質問者

お礼

yambejpさん お返事ありがとうございます。 >var oMessage = ""; きちんと確認せず出してしまいました。。。。 すみません。。 コードの方ありがとうございます。 何個か全く知らなかった文があるので、研究させて頂きます! 本当感謝です。

関連するQ&A

  • WSHでファイルを読み込まない。。。

    WSHで2個以上のtxtファイルの中身を連結して1つのファイルにして 掃き出すというプログラムを作りました。 いったんは正常に動作をしたのですが、最近PCの乗り換えを行い、 それ以降まったく動作しなくなりました。。。 仕事で使うプログラムの一部なので困っています。 どなたかご教授ください!! OSはPCの乗り換えをする前も後もXPのSP2です。 var objArgs = WScript.Arguments; var xmldc = new ActiveXObject("Microsoft.XMLDOM"); xmldc.async = false; //読み込んだファイルの数が2個以上か数える。 if (objArgs.Count() < 2) {//1個の場合・・・ WScript.Echo("txtファイルを2つ以上選択してください"); } else { //2個以上のときの処理 } 上記のプログラムで、2個以上のファイルをドラッグアンドドロップ で読み込ませようとしても必ず、 "txtファイルを2つ以上選択してください" と表示されます。 なぜでしょう??

  • HTMLにWSHを組み込む

    HTMLにWSHのコードを書く事は可能ですか? たとえば、ページ開くとNotePad.EXEが起動するようにしたいのですが 以下のような書き方をすると WScriptが宣言されていません。 とエラーになります。 <HTML> <HEAD> <TITLE>起動のテスト</TITLE> </HEAD> <meta http-equiv="Content-Script-Type" content="text/JavaScript"> <BODY> <SCRIPT LANGUAGE="JavaScript"> var title = "メモ帳"; var wsh = WScript.CreateObject("WScript.Shell"); wsh.Run( "NotePad.EXE" ); </SCRIPT> </BODY> </HTML> いい案がある方教えてください。

    • ベストアンサー
    • HTML
  • WSHについて教えてください

    他人の書いたプログラムを解析しているのですが、意味のわからない 行があって困っています。 下記はtest.txtをいうファイルを読み込み、その中に文字列"<checktest>"が 含まれていたら"-1"を返す関数です。 ■関数部分 function checktext(InFileN) var LineStr = new String(); while(!InFileN.AtEndOfStream) { LineStr = InFileN.ReadLine(); WScript.Echo(LineStr); WScript.Echo(">>" + LineStr.indexOf("<checktest>")) if(-1 < LineStr.indexOf("<checktest>")) { return(-1); } } return(1); ■関数呼び出し部分 var FileN,CheckFlg; FileN = FileSys.OpenTextFile(test.txt); CheckFlg = checktext(FileN); この関数の8行目の処理の意味がわかりません。 WScript.Echo(">>" + LineStr.indexOf("<checktest>")) <checktest>という文字は先頭にあるので、LineStr.indexOf("<checktest>") は0を返すと思います。 そうすると、この行は">>0を表示する"という意味でしょうか? なんのためにこの行があるのかわかりません。 どなたかわかる方がいらっしゃいましたら教えてください。 よろしくお願いします。

  • 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 "終了" 最初の一回目の実行時はできるのですが、それ以降更新してくれません。 よろしくお願いいたします。

  • [WSH] ファイルのコピーができない

    こんにちは。 次のようなスクリプトでFTPフォルダにファイルをコピーしようとしたのですが、カレントフォルダにファイルがコピーされてしまうようです。 どうすれば、FTPフォルダにファイルをコピーできるのでしょうか? var objShell = WScript.CreateObject("Shell.Application"); var objFolder = objShell.NameSpace("ftp://user:password@sitename/directory/"); objFolder.CopyHere("C:\\WINNT\\win.ini"); WScript.Sleep(6000); ※下記のページを参考にさせていただき作成しました。http://homepage3.nifty.com/aya_js/wsh/wsh25.htm

  • jscriptからエクセルのオートシェイプを作成しようとしていますが、

    jscriptからエクセルのオートシェイプを作成しようとしていますが、文字サイズの変更ができません。 スクリプトは以下の通りです。 <job id="ConstJob"> <reference guid="00020813-0000-0000-C000-000000000046"></reference> <script language="JavaScript"> //エクセルオブジェクト var excel = new ActiveXObject("Excel.Application"); //表示しないで編集 excel.Visible = false; // エクセル新規作成 var book = excel.Workbooks.Add(); book.Worksheets("Sheet1").Activate; // オートシェイプの作成 var shape0 = book.Worksheets("Sheet1").Shapes.AddShape(1, 5, 5, 410, 130); shape0.TextFrame.Characters().Font.Size = 9; ……(1) shape0.TextFrame.Characters().Text = "ここにテキスト"; //エクセルの保存 var fso = new ActiveXObject("Scripting.FileSystemObject"); book.SaveAs(fso.GetFolder(".").path + "\\sample.xls"); //エクセルの終了 excel.Quit(); WScript.Echo("作業完了"); </script> </job> この状態でwsfファイルを起動させると、(1)の行でエラーを起こしてしまいます。 「Font クラスの Size プロパティを設定できません。」というエラーです。 検索するとシートの保護を解除すればいい、というページが見つかったのですが、 (参考→http://okwave.jp/qa/q2497357.html) マクロでは使えても、Jscriptで書いても動作してくれません。 解決策をご存知の方は、よろしくお願いします。

  • テキストファイルに記載されているか調べるには。スクリプト

    Jスクリプトの質問です。 県名のみ記載されている jusho.txt があります。 この中からある県名が記載されているか調べるスクリプトを作ろうとしてますがうまくできません。 登録県名があったらアラートで表示させるにはどうすればいいですか。 途中まで考えましたがわからなくなりました。 -------------------------------------------- //調べたい県名をここで入力 kenmei="愛知県" //登録住所か調べる。 var fso = WScript.CreateObject("Scripting.FileSystemObject"); var stream = fso.OpenTextFile("jusho.txt",1); //1は読み専用 while (stream.AtEndOfStream="false"){ var jusho = stream.ReadLine(); if(kenmei=jusho){alert ("登録されてます")}; }; ----------------------------------------- jusho.txt と スクリプトは同じフォルダにあります。

  • WSHでシャットダウン

    WSH(JScript)でシャットダウンする方法を教えてください。 OSは2000とXPです。 XPだけなら以下の方法で出来るようですが、 2000で実行するとエラーになってしまいます。 var ws = new ActiveXObject("WScript.Shell"); ws.Run("shutdown -s -f");

  • JScript 連想配列の動的宣言

    JScriptです。 連想配列でmap?の様に宣言する場合、 定数で無いと正しく処理されない様なのですが、 動的に宣言する方法はないでしょうか? var mymap = []; // 引数は予測できない為動的 var myarg = WScript.Arguments; mymap = ['myarg(0)': 0]; WScript.Echo(mymap['myarg(0)']); // 結果は空白である

  • WSH ドロップしたファイルのファイル名に作成日を

    こんにちは WSHの質問です。 ドロップしたファイルのファイル名に作成日を追加するには どうゆう記述になりますでしょうか? Wscript.Arguments.Item  を使うまではわかったのですが それ以降さっぱりわからないです。 http://www.relief.jp/docs/wsh-get-files-name-wscript-arguments.html とかが参考にしているところです。 流れ的には次のような感じでしょうか? ドロップされた 個数を数える ファイルのフルパスを取得 ファイルの作成日を取得 ファイル名を書き換える よろしくお願いいたします。

専門家に質問してみよう