エラー この変数は宣言されていません'WScript'

このQ&Aのポイント
  • HTMLやjavascript初心者の方からの質問です。HTMLファイル内のボタンをクリックするとエラーが発生し、'WScript'という変数が宣言されていないというエラーメッセージが表示されます。このエラーの原因として、HTMLファイル内では'WScript'という変数を使用することはできない可能性があります。問題の解決策として、WScriptに代わる別の方法を使用するか、VBSファイルにして実行することが考えられます。
  • この質問では、HTMLファイル内で'WScript'という変数を使用する際にエラーが発生しているという内容です。エラーはIEやhtaEditといったソフトウェアを使用して実行する際にも発生します。特定のバージョンのIEに問題がある可能性も考えられますので、バージョンをアップデートするか、代替の方法を使用することが解決策となります。
  • 質問者はHTMLやjavascriptの初心者であり、HTMLファイル内でボタンをクリックするとエラーが発生し、'WScript'という変数が宣言されていないというエラーメッセージが表示されるという問題が発生しています。この問題の解決策として、HTMLファイル内では'WScript'という変数を使用することができない可能性があります。代替の方法を使用するか、VBSファイルにして実行することが考えられます。IEのバージョンも考慮する必要があります。
回答を見る
  • ベストアンサー

エラー この変数は宣言されていません'WScript'

こんばんは。HTMLやjavascriptは初心者ですが、よろしくお願いします。まず、こちらをご覧ください。 <HTML> <HEAD> <TITLE>Menu</TITLE> <SCRIPT LANGUAGE="VBScript"> <!-- Option Explicit Public fso, indexPageTS, i Sub Start(ByRef i) Dim rootFolder, rootPath Set fso = CreateObject("Scripting.FileSystemObject") Set rootFolder = fso.GetParentFolderName(WScript.ScriptFullName) alert rootFolder.Name Set indexPageTS = fso.CreateTextFile(fso.BuildPath(rootFolder.Path, "index.html"), True) このように、<HEAD>にサブプロシージャを記述しております。少し中略します。<BODY>に以下のボタンを置きます。 <input type="button" name="InputBtn" onclick="Start(1)" value="リンクの更新"> これを押すとエラーになってしまいました。 IEでは「ページでエラーが発生しました」、htaEditというソフトで実行すると表題に掲げたエラーが出ました。6行目の、 Set rootFolder = fso.GetParentFolderName(WScript.ScriptFullName) のところをfso.GetFolderで手書きのパスを指定したらうまくいっていたので、'WScript'の使い方がいけないのかなとも思いましたが、VBSファイルにして実行すると問題ありませんでした。 htmlページのボタンではWScript.ScriptFullNameは使えないのでしょうか? IEのヴァージョンは少し古めで、5か6ですが、問題ありますでしょうか? よろしくお願いします。

  • HTML
  • 回答数2
  • ありがとう数5

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.1

WScriptオブジェクトは、cscript.exeかwscript.exeで実行された場合だけに使えるオブジェクトです。VBSファイルはwscript.exeで実行されるのでOKですが、HTMLやHTAだと使えません。 HTAファイルのあるフォルダ名を得たいと言うことでしょうか?Explorerからダブルクリックで起動するなら、 Set rootFolder = fso.GetFolder(".") でいいのでは?

quicon9ue
質問者

補足

HTMLファイルのあるフォルダ(オブジェクト、またはパス名)を得たいです。Set rootFolder = fso.GetFolder(".")だと、「ホームディレクトリ」と言うのでしょうか、「マイドキュメント」が出てきます。 ShellのCurrentDirectoryも、CurDir関数も、「マイドキュメント」を返しました。ExcelのThisWorkbook.Pathのような結果を望んでいます。 まったく初心者なので「ダブルクリックで起動」というところが分かりませんが、ボタンなのでワンクリックです。よろしくお願いします。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.2

拡張子をHTAにして、そのファイルをダブルクリックで起動してみてください。 htmlファイルをブラウザで見るのであれば、ファイルのありかを知るのは、無理じゃないかなあ。

quicon9ue
質問者

お礼

とりあえず、問題の所在が明らかになりました。 htaでがんばってみます。 ありがとうございました。

関連するQ&A

  • VBSエラー"オブジェクト型の変数は定義されていません"について

    以下のコードは、あるルートフォルダにトップページ"TOP.html"をつくり(または上書きし)、各階層のフォルダの中に存在する拡張子がabc(仮称)のファイルと同じ名前のhtmlファイルを、abcファイルと同じフォルダに同じ数だけつくり(または上書きし)、トップページにその作成したすべてのhtmlファイルへのリンクを表示させる、という構想で作成中のVBSなのですが(具体的な数値等は"****"としました)、これを実行すると「●(マル)」と書いた55行目のところでエラー「オブジェクト型の変数は定義されていません」となってしまいます。このエラーをどのように対処すればよいかを教えていただければと思います。 私はExcelのVBAは多少の経験がありますが、VBScriptを書いたのはこれが初めてで、HTMLも未経験です。14・15行目の呼び出し方はこれでいいのかどうかも不安です。よろしくお願いします。 Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set CurFolder = fso.GetFolder(".") Call CreatePages1(CurFolder, "*.abc", files) Set outFileStream = Nothing Set CurFolder = Nothing Set fso = Nothing 'サブフォルダへの処理 Public Sub SearchSubFolder1(ByVal folder) Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set folder2 = fso.GetFolder(folder.Path) For Each folder2 In folder.SubFolders Call CreatePages1(folder2, searchPattern, files) '再帰呼び出し Call SearchSubFolder1(folder2) Next Set fso = Nothing End Sub 'htmlファイル作成 Public Sub CreatePages1(ByVal folder, ByVal searchPattern, ByRef files) Set fso = WScript.CreateObject("Scripting.FileSystemObject") 'トップページを途中まで作成する。 Set outFileStream = fso.CreateTextFile(folder.Path & "\TOP.html", True) outFileStream.WriteLine "<HTML>" outFileStream.WriteLine "<HEAD>" outFileStream.WriteLine "<TITLE>Viewer</TITLE>" outFileStream.WriteLine "</HEAD>" outFileStream.WriteLine "<BODY>" '各htmlファイルを作成する。 For Each fs In folder.Files Set outFileStream = fso.CreateTextFile(folder.Path & "\" & Left(fs.Name, Len(fs.Name) - Len(Ext)-1) & ".html", True) outFileStream.WriteLine "<HTML>" outFileStream.WriteLine "<HEAD>" outFileStream.WriteLine "<TITLE>Browser</TITLE>" outFileStream.WriteLine "</HEAD>" outFileStream.WriteLine "<BODY>" outFileStream.WriteLine "<OBJECT ID=""Browser1"" WIDTH=**** HEIGHT=**** CLASSID=""CLSID:****"">" outFileStream.WriteLine "<PARAM NAME=""_Version"" VALUE=""*****"">" outFileStream.WriteLine "<PARAM NAME=""_ExtentX"" VALUE=""*****"">" outFileStream.WriteLine "<PARAM NAME=""_ExtentY"" VALUE=""*****"">" outFileStream.WriteLine "<PARAM NAME=""_StockProps"" VALUE=""*****"">" outFileStream.WriteLine "<PARAM NAME=""FileName"" VALUE=""" & folder.Path & "\" & fs.Name & """>" outFileStream.WriteLine "</OBJECT>" outFileStream.WriteLine "</BODY>" outFileStream.WriteLine "</HTML>" outFileStream.Close() 'トップページの続きを作成する。 Ext = fso.GetExtensionName(fs.Name) If LCase(Ext) = "html" Then ●(マル) outFileStream.WriteLine "<a href=""" & folder.Path & "\" & fs.Name & """>" & Left(fs.Name, Len(fs.Name) - Len(Ext)-1) & "</a><br>" End If Next outFileStream.WriteLine "</BODY>" outFileStream.WriteLine "</HTML>" outFileStream.Close() 'サブフォルダへの処理。 Set fp = fso.GetFolder(folder.Path) Call SearchSubFolder1(fp) End Sub

  • VBSエラー"オブジェクト型の変数は定義されていません"について(2)

    こんばんは。よろしくお願いします。 CreatePages1は、あるルートフォルダ(rtFolder)にトップページ"index.html"をつくり(または上書きし)、そのルートフォルダの中にひとつだけあるフォルダ(sbFolder)以下のすべての階層のすべてのフォルダの中に存在する、拡張子がabc(仮称)のファイルと同じ名前のhtmlファイルを、abcファイルと同じフォルダに同じ数だけつくり(または上書きし)、トップページ"index.html"にその作成したすべてのhtmlファイルへのリンクを表示させる、という構想で作成中のVBSなのですが、これを実行すると「●(マル)」と書いた20行目のところでエラー「オブジェクト型の変数は定義されていません」となってしまいます。その前のEchoの結果は望みどおりになっていると思います。このエラーをどのように対処すればよいかを教えていただければと思います。 注)rtFolderにabcファイルはありません。 私はExcelのVBAは多少の経験がありますが、VBScriptを書いたのはこれが初めてで、HTMLも未経験です。 aSearchPatternに"*.abc"を代入したのに、▲(さんかく)と書いた行で拡張子"abc"を指定してしまっているのは、こうしないと全てのファイルについてhtmlファイルが作成されそうだったからです。よろしければ、このことも含めてご回答よろしくお願いします。 Option Explicit Public fso, CurFolder, indexPageTS, otherPageTS, rtFolder, sbFolder, sbFolder2, _ dataFolder, aSearchPattern, aFiles, FileItem, currentFolder, Ext Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set CurFolder = fso.GetFolder(".") Call CreatePages1(CurFolder, "*.abc", aFiles) Set CurFolder = Nothing Set fso = Nothing 'サブフォルダへの処理 Public Sub SearchSubFolder1(ByVal sbFolder) Set fso = WScript.CreateObject("Scripting.FileSystemObject") For Each sbFolder2 In sbFolder.SubFolders WScript.Echo sbFolder WScript.Echo sbFolder2 ●(マル) If sbFolder2 <> "" Then Call CreatePages1(sbfolder2, aSearchPattern, aFiles) '再帰呼び出し If sbFolder2 <> "" Then Call SearchSubFolder1(sbFolder2) End If End If Next 'オブジェクトの開放。 Set sbFolder2 = Nothing Set fso = Nothing End Sub 'htmlファイル作成 Public Sub CreatePages1(ByVal rtFolder, ByVal aSearchPattern, ByRef aFiles) Set fso = WScript.CreateObject("Scripting.FileSystemObject") 'トップページを途中まで作成する。 Set indexPageTS = fso.CreateTextFile(rtFolder.Path & "\index.html", True) indexPageTS.WriteLine "<HTML>" (中略) 'データフォルダに各htmlファイルを作成する。 For Each dataFolder In rtFolder.SubFolders If dataFolder <> "" Then For Each FileItem In dataFolder.Files If FileItem <> "" Then Ext = fso.GetExtensionName(FileItem.Name) ▲(さんかく) If LCase(Ext) = "abc" Then Set otherPageTS = fso.CreateTextFile(dataFolder.Path & "\" & Left(FileItem.Name, Len(FileItem.Name) - Len(Ext)-1) & ".html", True) otherPageTS.WriteLine "<HTML>" (中略) otherPageTS.WriteLine "</HTML>" otherPageTS.Close() 'トップページに各リンクを作成する。 Ext = fso.GetExtensionName(FileItem.Name) If LCase(Ext) = "html" Then indexPageTS.WriteLine "<a href=""" & rtFolder.Path & "\" & FileItem.Name & """>" & Left(FileItem.Name, Len(FileItem.Name) - Len(Ext)-1) & "</a><br>" End If End If End If Next End If Next 'トップページの続きを記述する。 indexPageTS.WriteLine "</BODY>" indexPageTS.WriteLine "</HTML>" indexPageTS.Close() 'データフォルダのサブフォルダへの処理。 For Each dataFolder In rtFolder.SubFolders If dataFolder <> "" Then Set currentFolder = fso.GetFolder(dataFolder.Path) If currentFolder <> "" Then Call SearchSubFolder1(currentFolder) End If End If Next 'オブジェクトの開放。 Set currentFolder = Nothing Set dataFolder = Nothing Set indexPageTS = Nothing Set otherPageTS = Nothing Set fso = Nothing End Sub

  • VBS について

    以下のスクリプトは、あるフォルダ以下の(サブフォルダを含む)abcファイル(仮称)すべてについて同じ名前でhtmlファイルをつくると同時に、そこへリンクするメニューのページを上書きする、という構想で書いたものですが、実行すると2行目で ')'がありません というエラーが出てしまいました。(具体的な数値等は"****"としました) 私はExcelのVBAは多少の経験がありますが、VBScriptを書いたのはこれが初めてで、HTMLも未経験です。 "')'がない"というのはどういうことなのか、このエラーをどのように対処すればよいかを教えていただければと思います。よろしくお願いします。 Set fso = WScript.CreateObject("Scripting.FileSystemObject") Public Sub GetAllFiles(ByVal folder As String, ByVal searchPattern As String, ByRef files As ArrayList) 'folderにあるファイルを取得する。 Dim fs As String() = System.IO.Directory.GetFiles(folder, searchPattern) 'トップページを途中まで作成する。 Set outFileStream = fso.CreateTextFile(folder.Path & "\***", True) outFileStream.WriteLine "<HTML>" outFileStream.WriteLine "<HEAD>" outFileStream.WriteLine "<TITLE>****</TITLE>" outFileStream.WriteLine "</HEAD>" outFileStream.WriteLine "<BODY>" '各htmlファイルを作成する。 For Each fs In folder.Files Set outFileStream = fso.CreateTextFile(folder.Path & "\" & Left(fs.Name, Len(fs.Name) - Len(Ext)-1) & ".html", True) outFileStream.WriteLine "<HTML>" outFileStream.WriteLine "<HEAD>" outFileStream.WriteLine "<TITLE>***</TITLE>" outFileStream.WriteLine "</HEAD>" outFileStream.WriteLine "<BODY>" outFileStream.WriteLine "<OBJECT ID=""****"" WIDTH=*** HEIGHT=*** CLASSID=""CLSID:****"">" outFileStream.WriteLine "<PARAM NAME=""_Version"" VALUE=""***"">" outFileStream.WriteLine "<PARAM NAME=""_ExtentX"" VALUE=""***"">" outFileStream.WriteLine "<PARAM NAME=""_ExtentY"" VALUE=""***"">" outFileStream.WriteLine "<PARAM NAME=""_StockProps"" VALUE=""***"">" outFileStream.WriteLine "<PARAM NAME=""FileName"" VALUE=""" & folder.Path & "\" & fs.Name & """>" outFileStream.WriteLine "</OBJECT>" outFileStream.WriteLine "</BODY>" outFileStream.WriteLine "</HTML>" outFileStream.Close() 'トップページの続きを作成する。 Ext = fso.GetExtensionName(fs.Name) If LCase(Ext) = "html" Then outFileStream.WriteLine "<a href=""" & folder.Path & "\" & fs.Name & """>" & Left(fs.Name, Len(fs.Name) - Len(Ext)-1) & "</a><br>" End If Next outFileStream.WriteLine "</BODY>" outFileStream.WriteLine "</HTML>" outFileStream.Close() 'folderのサブフォルダを取得する。 Dim ds As String() = System.IO.Directory.GetDirectories(folder) 'サブフォルダへの処理も行う。 Dim d As String For Each d In ds GetAllFiles(d, searchPattern, files) Next d End Sub Set CurFolder = fso.GetFolder(".") GetAllFiles(CurFolder, "*.abc", files) Set outFileStream = Nothing Set CurFolder = Nothing Set fso = Nothing

  • 緊急です。Wscriptで・・・

    IIS上にあるASPファイルからWscriptを呼び出して、VBで作成したEXEを実行させたいのですが、上手くいきません。コマンドプロンプトから実行させると上手くいくのですが、どうしてでしょうか?ASPはIIS上にあり、test.exeを実行すると別サーバにファイル(例 \\サーバ名\bbb\OK.txt)を作成するといったプログラムです。UNCパス指定だからでしょうか?よろしくお願いします。 ASPファイル内容--------- <%@ language="VBScript"%> <html> <body> テストASP <% Dim WshShell Set WshShell = Server.CreateObject("WScript.Shell") WshShell.Run "\\サーバ名\aaa\test.exe" , 0 , false Set WshShell = Nothing %> </body> </html>

  • htmlのボタンでVBSのプロシージャを起動

    こんばんは。まず、状況の説明と、やりたいことの箇条書きです。 1. あるフォルダー"root"をルートフォルダーとする。 2. ルートフォルダーにはフォルダ"abcdata"とindex.htmlとmystyle.cssがある。 3. フォルダ"abcdata"にはサブフォルダー1つしかない。 4. サブフォルダーは複数階層になっている。 5. 各サブフォルダー内には拡張子 abc のファイルが置いてある。 6. index.html上のボタン"refresh"をクリックすると、サブプロシージャー"Start"が働く。 7. サブプロシージャー"Start"は、全ての *.abc ファイルと同じ名前の html ファイルを *.abc ファイルと同じフォルダーに作り、作成した各 html ファイルへのリンクを、ルートフォルダーの index.html に記述する。 8. index.html におけるリンクの表示は、階層ごとにインデント適用する。 下記、引用のソースは、index.htmlを写したものです(具体的な数値等は伏せてあります)。そこにうめこまれた"refresh"ボタンを押すとサブプロシージャー"Start"を起動され、index.html自身が書きかわるようにしたいのですが、うまくいきません(IEの左下のところに「ページでエラーが発生しました」と出ます)。どうすればよいでしょうか。 私はExcelのVBAは少し経験がありますが、VBSを書いたのはこれが初めてです。HTMLやCSSはまったくの初心者です。ようやくフォントサイズの絶対指定ができた程度です。よろしくお願いします。 <HTML><HEAD><TITLE>Viewer</TITLE> <SCRIPT LANGUAGE="VBScript"> <!-- Sub Start(ByRef i) Set fso = CreateObject("Scripting.FileSystemObject") Set rootFolder = fso.GetFolder(".") 'index.htmlを作成 Set indexPageTS = fso.CreateTextFile(fso.BuildPath(rootFolder.Path, "index.html"), True) indexPageTS.WriteLine "<HTML>" (ヘッダーは省略:文字数節約のため) indexPageTS.WriteLine "<BODY text=""#000000"" link=""#0000FF"" alink=""teal"">" indexPageTS.WriteLine "<span style="width:100%; filter:DropShadow(color=#CCCCFF,direction=135)"><font color=""Navy""; size= 6pt>abcdata</font></span><br>" indexPageTS.WriteLine "<br>" indexPageTS.WriteLine "<input type=""button"" value=""reload"" onclick=""location.reload()"">" indexPageTS.WriteLine "<input type=""button"" name=""InputBtn"" onclick=""Start(1)"" value=""refresh"">" indexPageTS.WriteLine "<br>" '各サブフォルダーへの処理はDataFolderProcに任せる Set accessoryFolder = fso.GetFolder(".\abcdata") For Each dataFolder In accessoryFolder.SubFolders i = 1 Call DataFolderProc(dataFolder, i) Next indexPageTS.WriteLine "</p>" indexPageTS.WriteLine "</BODY>" indexPageTS.WriteLine "</HTML>" indexPageTS.Close() Set indexPageTS = Nothing Set fso = Nothing End Sub indexPageTS.WriteLine "<br>" Sub DataFolderProc(aFolder, n) For Each dataFile In aFolder.Files If LCase(fso.GetExtensionName(dataFile)) = "abc" Then linkName = fso.GetBaseName(dataFile.Name) dataPageName = fso.GetBaseName(dataFile.Name) & ".html" Set dataPageTS = aFolder.CreateTextFile(dataPageName, True) dataPageTS.WriteLine "<HTML>" '(中略:各htmlファイルへの記述がここに入る) dataPageTS.WriteLine "</HTML>" dataPageTS.Close() 'index.htmlに各リンクを張る indexPageTS.WriteLine "<p style=""text-indent:" & n & "em"><a target=""_blank"" href='" & fso.BuildPath(aFolder.Path, dataPageName) & "'>" & linkName & "</a>" End If Next 'サブフォルダーがあれば同様に処理する For Each subFolder In aFolder.SubFolders n = n + 1 Call DataFolderProc(subFolder, n) Next End Sub --> </SCRIPT> <LINK REL="stylesheet" TYPE="text/css" HREF="mystyle.css"> </HEAD> <BODY text="#000000" link="#0000FF" alink="teal"> <span style="width:100%; filter:DropShadow(color=#CCCCFF,direction=135)"><font color="Navy"; size= 6pt>abcdata</font></span><br> <br> <input type="button" value="reload" onclick="location.reload()"> <input type="button" name="InputBtn" onclick="Start(1)" value="refresh"> <br> <p style="text-indent:1em"><a target="_blank" href='C:\root\abcdata\a\abcde</a> '(中略:各リンク) </p></BODY></HTML>

    • ベストアンサー
    • HTML
  • サーバーにバックアップを作りたいのですが書き込みが出来ません

    サーバーにバックアップを作りたいのですが書き込みが出来ません ほかのところだと うまくいくのに サーバー内は、だめなんでしょうか? アクセス権とか あるんでしょうか? ASP winXP <% Set folder = fso.GetFolder("C:\Inetpub\wwwroot\センター") Set folder2 = fso.GetFolder("C:\Inetpub\wwwroot\センター\バックアップ") frname = fso.BuildPath(folder.Path, "ハウス.mdb") toname = fso.BuildPath(folder2.Path, "ハウス.mdb") If fso.FileExists(frname) = False Then Response.Write "複写元のハウス.mdbが存在しません。<BR>" Else Response.Write "ハウス.mdbを複写しました。<BR>" fso.CopyFile frname, toname, True End If %>

  • VBScriptの読込でのSkipLineの動き

    VBScriptでSkipLineで ファイル読み込みで1行ずつ読み飛ばしをしているのですが、 そこで質問があります。 以下のサンプルを実行すると、 「Microsoft VBScript 実行時エラー: ファイルの最後を超えた入力を行おうとしました。」 が出力され処理が終了します。 ですが、エラーがあっても無視して継続させる 「On Error Resume Next ~ On Error Goto 0」 の記述を行うと期待した結果となります。 エラーが合っても無視しろですから処理が行われるのは当たり前ですが、 1行スキップなのに、何故、エラーとなるのでしょうか。 また、その「On Error Resume Next」の記述をせず対処する方法は あるのでしょか。 ------------------------------------------------- Option Explicit Dim fs Dim fin Dim dir Dim path_in Dim strTemp Set fs = CreateObject("Scripting.FileSystemObject") dir = fs.GetParentFolderName(WSH.ScriptFullName) path_in = fs.BuildPath(dir, "test.txt") Set fin = fs.OpenTextFile(path_in, 1) Do While fin.AtEndOfStream <> True strTemp = fin.ReadLine fin.SkipLine WScript.Echo strTemp Loop fin.Close [test.txt] これは1行目です。 これは2行目です。 これは3行目です。 これは4行目です。 これは5行目です。

  • Vbscriptに詳しいかたがいらっしゃるならぜひ教えてください!

    以下のコードなんですが なぜかwindows2000では何回実行しても 圧縮ファイルができあがりますが windows2003では いつも空のzipファイルが作られてしまいますけど Vbscriptに詳しいかたがいらっしゃるなら ご教授願います。 Dim fso Dim wShell Dim sourceFolderPath Dim sourceFilePath Dim targetFolderPath Dim Shell Dim ie Dim file Dim d Dim sourceFile Dim zipfile Dim zip Dim dFolder Dim ZIPdata:ZIPdata="PK" & Chr(5) & Chr(6) & String(18,0) targetFolderPath="C:\job\VBS\zip\" sourceFilePath ="C:\job\VBS\新しいフォルダ\test1.txt" Set fso=CreateObject("Scripting.FileSystemObject") Set wShell=CreateObject("WScript.Shell") CreateObject("WScript.Shell").Run "explorer.exe",0,True WScript.Sleep 100 Set Shell=CreateObject("Shell.Application") For Each ie In Shell.Windows If Not ie.Busy and ie.ReadyState=4 and InStr(TypeName(ie.Document),"IShellFolderViewDual")=1 Then exit for end if next Set Shell=ie.Document.Application 'set sourceFolder = fso.GetFolder(sourceFolderPath) set sourceFile = fso.GetFile(sourceFilePath) set targetFolder = fso.GetFolder(targetFolderPath) set sourceFile = fso.GetFile(sourceFilePath) d = sourceFile.DateLastModified zipfile=targetFolderPath & "¥" & Year(d) & "-" & Month(d) & "-" & Day(d) & " " & sourceFile.Name & ".zip" fso.CreateTextFile(zipfile).write ZIPdata Set dFolder=Shell.NameSpace(zipfile) Set Folder=Shell.NameSpace(sourceFile.ParentFolder.Path) Set FolderItem=Folder.ParseName(sourceFile.Name) dFolder.CopyHere FolderItem,&H10

  • VBScriptでCurrentDirectoryを変更する方法

    もともとのやりたいことは実行したスクリプトの相対パスでファイルを指定することです。 (スクリプトは複数の実行環境で実行するので絶対パスでは書きたくありません) ただし、ダブルクリックでも起動するし、別ファイルのD&Dでも起動するので 必然的に起動時のCurrentDirectoryが変化してしまいます。 これを固定化したいのです。 いまは固定化というか起動後に目的のディレクトリに移動することで実現させようと思っています。 とりあえず以下のコードを書きました。 Dim CurrentDirectory CurrentDirectory = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) -21) Dim oShell Set oShell = WScript.CreateObject ("WSCript.shell") oShell.run "cmd CD " + CurrentDirectory, 0, FALSE Set oShell = Nothing (2行目の「-21」はスクリプト名の長さを引いているだけです。あまり気にしないでください) が、これだと見た目はうまくいくのですがcmdプロセスが残ってしまい起動するたびに増えていきます。 それにそもそもスマートではない気がします 質問は以下です。 ・上記のコードを修正してcmdプロセスを残らないようにする方法 ・上記の方法以外でCurrentDirectoryを変更する方法 どちらでもかまいません。(両方だとなおうれしいです) よろしくお願いします。

  • スクリプトのフルパス取得したい

    言語知ってる人には簡単な話なんでしょうか そのスクリプトが動いているフルパスの取得の方法がわからず悩んでいます スクリプトは以下(最低ロジックのみ抜粋) var fso = new ActiveXObject("Scripting.FileSystemObject"); var topic = WScript.ScriptFullName + "\log"; <---ここをどうすればいいか不明 if(!fso.FolderExists(topic))   fso.CreateFolder(topic); 動作環境は Windows7(32ビット)上となります 目的 スクリプトが置いてあるフォルダにサブフォルダ(子フォルダ log)を作りたい

専門家に質問してみよう