• 締切済み

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つ以上選択してください" と表示されます。 なぜでしょう??

みんなの回答

  • SHIMAPEE
  • ベストアンサー率75% (154/203)
回答No.1

問題を切り分けるために単純なWSH JScriptを試してみては。ドロップしたファイル数が正しく表示されないのでしたらWSHが壊れていると思います。 WScript.Echo (WScript.Arguments.Count()); 下記などからWSHをダウンロードして再インストールし、更にWindows Updateをしてみてはどうでしょう。 WindowsXP SP3ですが、下記を再インストール後のScriptEngineのバージョンは 5.6.8831、Windows Updateで 5.7.18066 になりました。 Windows 2000 および Windows XP 用の Windows Script 5.6 http://www.microsoft.com/downloads/details.aspx?FamilyID=C717D943-7E4B-4622-86EB-95A22B832CAA&displaylang=ja

関連するQ&A

  • 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]); と足すと、何も入っていない状態になってしまいます。 この場合、どの様に修正、追加すればいいのかわからず、 迷っています。 (根本から使い方を間違っている?) もしお分かりの方がいらっしゃいましたら、 ご教授お願い致します。

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

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

  • WSHでスクロールの制御をしたいと考えています。

    WSHでスクロールの制御をしたいと考えています。 いつも開いているフォルダがあるのですが、そのフォルダで利用するものは一番下の方にあるため、フォルダを開いてフォルダの一番下までスクロールするという動作を自動化したいと考えています。 取り敢えず、フォルダを開くところまでは、 var objWShell = new ActiveXObject("WScript.Shell") objWShell.Run("H:\\") として、出来るようになりました。 後は、End keyのような動作かスクロールさせる動作をさせたいのですが検索しても見つかりません。 どなたか宜しくお願いします。

  • WSHでシャットダウン

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

  • [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

  • WSH動作しない!!(WScript.SleepとSendKeys?)

    WSHが動作しなくて困っています。 動作するコードとしないコードは次のとおりです。 いずれも@ITに掲載されているサンプルコードをそのままです。 動作しないコードについても,notepadの起動まではできます。 どうやら,sleepとsendkeysが動いてくれないようです。 <正常に動作するコード> Set objShell = WScript.CreateObject("WScript.Shell") WScript.Echo "メモ帳を起動します。" objShell.Run "notepad.exe" http://www.atmarkit.co.jp/fwin2k/operation/wsh03/wsh03_02.html <動作しないコード> Set objShell = WScript.CreateObject("WScript.Shell") objShell.Run "notepad.exe" WScript.Sleep 1000 objShell.SendKeys "hello" http://www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_04.html ■動作環境 Win XP Pro IE 6.0 ちなみに,WSHファイルに対する実行権限はあります(フルコントロールです)。 以上なのですが,何か点検するべき事項などありましたらご教示ください。

  • ActiveXObjectについて

    var objFileSys = new ActiveXObject("Scripting.FileSystemObject"); のところで ActiveXObject is not defined というエラーが出るのですがどうしたらいいか方法教えてください。 <script type="text/javascript"> <!-- var strScriptPath; var strCreateFile; var strDate; //(1)現在時刻をHHMMSSの形式で取得します strDate = getTime(); //(2)ファイルシステムオブジェクトの作成 var objFileSys = new ActiveXObject("Scripting.FileSystemObject"); //(3)プログラムが保存されているフォルダを取得します strScriptPath = String(WScript.ScriptFullName).replace(WScript.ScriptName,""); //(4)プログラムが保存されているフォルダに、新たにファイルを作ります // ファイル名は現在の時刻(HH_M_S形式)+拡張子(.txt)です strCreateFile = objFileSys.BuildPath(strScriptPath,strDate + ".txt"); objFileSys.CreateTextFile(strCreateFile); WScript.echo(strScriptPath + "に" + strDate + ".txtという名前のファイルを作りました"); //オブジェクト破棄 objFileSys = null; function getTime() { //時刻を編集し返す var objDate = new Date(); return objDate.getHours() + "_" + objDate.getMinutes() + "_" + objDate.getSeconds(); } //--> </script>

  • 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でプログラミングをしています。 WSHを使う理由はWin上から簡単にメールを送信できるのでとりあえず選択しました。 で、WSHのバッチから、普通のDOSコマンドで記述したバッチを呼んで、そのバッチの結果出力されたログファイルをWSHのバッチでメールに添付して送信したいなどと思っています。 今は var ws = WScript.CreateObject("Wscript.Shell"); ws.run("tmp.bat"); こんな感じで「tmp.bat」という名のDOSコマンドのバッチを呼び出しているのですが、このコマンドは命令発行したらその命令が終了するのを待たず次の命令に進んでしまうようです。 なので、ログ作成とメール送信のタイミングが合わない状態です。 処理待ちする方法を教えてください。よろしくお願いします。

  • WSHのエラー対策

    いつも参考にさせて頂いております。 当方環境: OS WinXP WSH Version 5.7 現在、WSH+JScript でFTPによるファイル転送のプログラムを作成しております。 ところが、実行させてみると、FTPコマンド実行のところでエラーが発生します。 (IPやコマンドファイルはスクリプト内で取得しています) var ws = WScript.CreateObject("WScript.Shell"); var errCode = ws.Run("ftp -i -s:"+cf+" "+ip_add,0,true); エラーメッセージ:「処理を待つことができません。」 MicrosoftのHPで検索したら、以下の事が分かりました。 「通常このエラーは、あるプロセス (ショートカット リンクの実行など) が完了するまでスクリプトが待機しているときに、そのプロセスが値を返さない場合に発生します。」 色々なHP見ても、大体皆さんFTPコマンドはこのように実行されているんですが、どこが違うのでしょうか? また、このエラーへの対処方法をご存知の方がいらっしゃいましたら、 ご教授下さい。

専門家に質問してみよう