bmw528 さん (bmw5_28@yahoo.co.jp) 2008年 06月 10日 21時 42分 52秒

VBScriptで、PC(WindowsXP)からサーバ(Windows2003)にある、
dtexec(SqlServerのIntegrationServices)をリモート接続経由で、実行させたいと思っているのですが、実行すると、下記エラーMsgが表示されます。
「エラーコード 800A0046 書き込みできません。」
ちなみに、2003→XPでは実行できました。

何かサーバ(2003)特有の設定が必要なのでしょうか?

下記作成ソースです。
----------------------------------------------------------------
Option Explicit
On Error Resume Next

Dim objWshCtrl   ' WshController オブジェクト
Dim strRemotePC   ' リモートのコンピュータ名
Dim strScript    ' 実行するスクリプトファイル
Dim objExecCmd   ' 実行コマンド情報

Set objWshCtrl = WScript.CreateObject("WshController")
If Err.Number = 0 Then
  strRemotePC = "ホスト名"
  strScript = "dtexecを実行するVBS名"
  Set objExecCmd = objWshCtrl.CreateScript(strScript, strRemotePC)

  WScript.Echo strRemotePC & " で " & strScript & " を実行します。"
  objExecCmd.Execute
  WScript.Echo "開始します。"
  Do While objExecCmd.Status <> 2
    WScript.Sleep(2000)
  Loop
  WScript.Echo "終了しました。"
Else
  WScript.Echo "エラー: " & Err.Description End If

Set objExecCmd = Nothing
Set objWshCtrl = Nothing


白猫 さん 2008年 05月 27日 10時 42分 20秒

みなさん初めまして
VBSの勉強をしていて以下のHTA
<html>
<script language="vbscript"><!--
     window.resizeTo 360, 270
     document.bgcolor=rgb(0,0,0)
--></script>
<head>
<title>クリエイトTXT</title>
</head>
<body>
<form name="form1">
     <font color="white">
     <p>ファイル名を入力してください。</p><br>
     <p><input type="text" name="strfilename" value="" /></p>
     <p>作成数を入力してください。</p>
     <input type="text" name="lngfile" value="" size="2"/></p>
     <p><input type="button" value="作成実行"
       onClick="Sub_CreateFile()" /></p>
     </font>
</form>

<script language="VBScript">

Option Explicit

Sub Sub_CreateFile()

     Dim objFileSys
     Dim strScriptPath
     Dim strCreateFile
     Dim lngmax
     Dim i
     Dim renban
    
     lngmax=document.form1.lngfile.value
     If 1>lngmax or 999<lngmax then
     msgbox"1〜999の数字を入れてね",vbExclamation,"注意(´・ω・`)"
     exit sub
     end if

     'ファイルシステムオブジェクトの作成
     Set objFileSys = CreateObject("Scripting.FileSystemObject")

     '出力先フォルダを取得
     strScriptPath = objFilesys.getfolder(".")

     'lngmax個のファイルを作成
     For i = 1 to lngmax
          If i<10 then
          renban="00" & i
          else
          renban="0" & i
          end If
     strCreateFile = objFileSys.BuildPath(strScriptPath, document.form1.strfilename.value & renban & ".txt")
     objFileSys.CreateTextFile strCreateFile
     Next

     'オブジェクト破棄
     Set objFileSys = Nothing

end sub

</script>
</body></html>

をつくったのですが、これにプログレスバーをつけようと
<p><object id="ProgressBar1" classid="CLSID:35053A22-8589-11D1-B16A-00C0F0283628" height="10" </object></p>
を入れるとなぜかエラー(Sub_CreateFileの型が一致しない)になってしまいます。もちろんこのコードを入れない状態では普通に機能しています。
オブジェとフォームが共存できない等の仕様があるのでしょうか?


死者の代弁者 さん 2008年 05月 22日 00時 07分 35秒
URL:http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/apr05/hey0408.mspx

>アリス さん (maeda_k915@hotmail.com) 2008年 04月 29日 23時 14分 11秒

スクリプトセンターに、WMIを使用して検索する方法が出ています。(URL参照)
ファイルさえ見つかれば、後は煮るなり焼くなり…。

qwerty さん 2008年 05月 18日 03時 25分 53秒

質問
simple_backup.vbsのレジストリキー保存について
キー名に空白が含まれると保存できないため修正を希望。

mm さん 2008年 05月 01日 21時 54分 09秒

いつもお世話になります。
WSHでエクセルを起動するのですが、アドインが見つかりませんでエラーとなりうまく動きません。当然アドイン(分析ツールVBA)はいれており、エクセルをクリックし動かす事はできます。WSHからの起動ができません。
わかる方ご教授ください。

アリス さん (maeda_k915@hotmail.com) 2008年 04月 29日 23時 14分 11秒

管理人様、並びに皆様初めまして。
少しご相談に乗って頂きたいのですが…宜しいでしょうか?
現在、「ドライブレター、フォルダ、ファイル名が指定出来ない状態で、
画像ファイル(JPG、BMP)を外部メモリに抽出Copy」
をしたいと思い、自分で色々調べているのですが、
行き詰まってしまいました。

イメージとしては「USBメモリからWSH実行→USBのドライブレター取得→
C:以降を再帰処理で全ドライブ全フォルダから.JPGと.bmpを検索→
該当ファイルを(重複上書きを避ける為フォルダ単位かつC:\windows除く)
取得したUSBにXCopy。といった感じです。
USB取得までは出来たのですが、お恥ずかしい話、windows標準検索
のように拡張子で全フォルダの全ファイル検索が出来ないと解り、
困っています。
FileExistsをワイルドカード使用で出来るのかと思ってました。
C:windowsを除く方法も良くわかりませんが・・・

PC複数台、更に使用者によって画像が存在するドライブ、フォルダ、
ファイル名がバラバラなのでドライブ、フォルダ指定での検索も
出来ません。
WSHで上記作業を行おうとした場合どうすれば上手くいくでしょうか?
それとも別のアプローチを考えた方が良いでしょうか?

長文、乱文ですみませんが、お力を貸して頂ければ幸いです。
宜しくお願いします。

初心者 さん (yonakuni@hotmail.com) 2008年 04月 24日 06時 57分 55秒


Nishiさん もうごらんになっていないかな
下記でどうでしょうか

Option Explicit
Dim objDialog
Dim nRet

Set objDialog = CreateObject("UserAccounts.CommonDialog")

objDialog.Filter = "全て|*.*|テキスト|*.txt"
objDialog.InitialDir = "C:\"
nRet = objDialog.ShowOpen

if nRet = 0 then
     Wscript.Quit
End If

WScript.Echo objDialog.FileName


困った困った さん 2008年 04月 08日 12時 41分 55秒

To 管理人 牟田口大介さん、ロートルタートルさん

ありがとうございます。ロートルタートルさんの方法で解決しました。
今後ともよろしくおねがいします。

P.S.
みなさんの書き込みを見てまだまだ勉強不足を実感しました。
これからもちょくちょく拝見させていただきますので、
よろしくおねがいします。

Nishi さん (niikou@mail.goo.ne.jp) 2008年 04月 02日 17時 28分 07秒

はじめまして。
WSHの存在を知りはじめて使用しているのですが、うまくいきません。
どうかお知恵を御貸しください。
以下のスクリプトで「ファイルを開く」ダイアログを表示させようと
思うのですが、表示されません。
どこか間違っているのでしょうか
<script language="JScript">
function getmyfile(){
var dialog = new ActiveXObject("MSComDlg.CommonDialog");
dialog.MaxFileSize = 256;
dialog.Flags = 14607;
dialog.Filter =
"全てのファイル|*.*;|" +
"gifファイル|*.gif;|";
// ファイルを開くダイアログを表示する
dialog.ShowOpen();
return(dialog.FileName);
}
</script>

(管理者により削除) さん ((管理者により削除)) 2008年 04月 02日 11時 18分 23秒
URL:(管理者により削除)

(管理者により削除)

ちゃっぴ さん 2008年 03月 18日 19時 15分 36秒

To 初心者 さん (order_joy_cap_kyoto@yahoo.co.jp) 2008年 03月 16日 20時 23分 22秒

この事前確認を行っても必ず成功することが保障されるわけではありません。
こういった処理は実際に処理を行ってみて成功するか失敗するかで判断します。

ちゃっぴ さん 2008年 03月 18日 19時 05分 29秒

To 初心者 さん (order_joy_cap_kyoto@yahoo.co.jp) 2008年 03月 16日 20時 23分 22秒

一部ではなく全体で取得するようにしてください。

Const CSIDL_MYPICTURES = &H27

Dim objShell  ' As Shell32.Shell
Dim objFolder  ' As Shell32.Folder3

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(CSIDL_MYPICTURES)
WScript.Echo objFolder.Self.Path

初心者 さん (order_joy_cap_kyoto@yahoo.co.jp) 2008年 03月 16日 20時 23分 22秒

はじめまして。
まったくの初心者です。
OSはVista です。
フォルダのコピーをしたいのですが、
ピクチャにコピーしたいとき、C:\Users\aaa\Pictures
の「aaa」の部分はどのような記述をしたらよいのでしょうか?
教えていただけませんでしょうか?
よろしくお願いします。

はわわ さん 2008年 03月 13日 13時 08分 27秒

はじめまして。
WSH初心者です。
よろしくお願いします。

WSHで最も簡単にインターネットの存在確認ができるコードを
ご教示願います。
(CDOでメール送信前にネットワーク有効無効を知りたい。)

ちゃっぴ さん 2008年 03月 08日 02時 39分 06秒

To wshLv7 さん 2008年 03月 03日 00時 56分 26秒

WSF (Windows Script File) や WSC (Windows Script Component) とかなら可能でしょう。

ちゃっぴ さん 2008年 03月 08日 02時 34分 30秒

To れがしーおーえす さん 2008年 03月 03日 20時 06分 35秒

Windows 2000 では ZIP 形式の圧縮解凍は標準で support されていません。
外部 component の利用を検討してください。

もっとも、Windows XP 以降にしてもその方法は個人的に推奨しませんが。

ちゃっぴ さん 2008年 03月 08日 02時 31分 58秒

To cat さん 2008年 02月 28日 18時 26分 43秒

下記のような形式で呼び出してください。

"{BookName}!{ModuleName}.{FunctionName}"

giochi gratuiti さん (taliano@yahoo.com) 2008年 03月 05日 06時 35分 05秒
URL:http://groups.google.it/group/casino-in-italiano

Nice site! Good information. ムasino online in italiano
<a href=http://groups.google.it/group/casino-in-italiano/web/casino-sicuri>casino sicuri</a> [url=http://groups.google.it/group/casino-in-italiano/web/casino-sicuri]casino sicuri[/url]
<a href=http://groups.google.it/group/casino-in-italiano/web/giochi-gratuiti>giochi gratuiti</a> [url=http://groups.google.it/group/casino-in-italiano/web/giochi-gratuiti]giochi gratuiti[/url]

End ^)

れがしーおーえす さん 2008年 03月 03日 20時 06分 35秒

はじめまして。最近WSHを知った初心者です。
よろしくお願いします

『zipファイルを空で作成し、圧縮したいファイルのフォルダアイテム
オブジェクトを、zipファイルの CopyHere でコピーすることで
圧縮ファイルとする』という手法があると思うのですが、当方の
環境では、何故か圧縮したいファイルでzipファイルが
上書きされてしまい、理由がわかりません。

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim ZIPfile
ZIPfile = "F:\ZIPFILES\test.zip"
fso.CreateTextFile(ZIPfile,False).Write "PK" & Chr(5) & Chr(6) & String(18,0)

Dim sFolderItem
Dim Shell
Dim Count
Set Shell = CreateObject("Shell.Application")
Set sFolderItem=Shell.NameSpace(fso.GetParentFolderName(fso.GetAbsolutePathName("F:\SOURCE\STAFF_900012.doc"))).Items().Item("STAFF_900012.doc")
Set zFolder=Shell.NameSpace(ZIPfile)
Count=zFolder.Items().Count
'zFolder.CopyHere sFolderItem,&H10
zFolder.CopyHere sFolderItem

Do While zFolder.Items().Count=Count
 WScript.Sleep 500
Loop

Set fso = Nothing
Set zFolder = Nothing
Set sFolder = Nothing
Set sFolderItem = Nothing


当方の実行環境は、『Windows2000SP4 、WSH5.6』 ですが、この条件だと
そもそも上記コードは実行できないものなのでしょうか。
(ちなみに同じスクリプトをXPで実行した場合は問題なくzipファイル内に
 圧縮されていることは確認しております。)
この方法がダメな場合は、IE上で圧縮対象ファイルをクリックして、
「送る - 圧縮フォルダ」の動作をWSHでさせされるのでは?とも考えており、
どこかに簡単なサンプル等あれば、それを参考にさせていただきたいとも
考えております。

うまくWSHで動作できた場合は、ASP上でこのテクノロジを
転用したいというのが本来の目的でもあります。
むたぐちさまをはじめ、WSHの猛者の皆様方のお知恵を
お貸しいただければ非常に助かります。
どうぞよろしくお願いします。

wshLv7 さん 2008年 03月 03日 00時 56分 26秒

初心者です。よろしくお願いいたします。

vbScriptとJScriptを使って、プログラムを作成しているのですが、
vbscriptのロジックを読み込んでいる途中に、JScriptのロジックに切り替える方法もしくは、キーワードがあればご教授お願いします。

cat さん 2008年 02月 28日 18時 26分 43秒

VBScriptで開発中のcatと申します。
かなりの初心者ですがよろしくお願いいたします。

通常の動きでは、VBScriptで簡単には以下のような形でマクロを呼び出しています。

Set objExcel = CreateObject("Excel.Application")
Set objExcel = GetObject(, "Excel.Application")
objExcel.run("マクロ名称")

しかし、Excelが多重起動されている場合、本来望んでいないマクロを動作させようとしてしまいます。
そのため、マクロが見つからない等のエラーが発生してしまいます。

私がやりたいのは、最も新しくデータを入力されたブックのマクロが呼びたい、という事です。

Excelが3つ立ち上がっている状態で、2番目のブックが入力された場合、そのマクロを動作させたいのです。

objxl.run("マクロ名称") ←この一文だけをいじって、特定のブックのマクロを呼び出せれば最高なのですが・・・。



4日間、試行錯誤を繰り返しましたが解決には
至っておりません。
大変焦っている状況です。
どなたかご教授頂けないでしょうか。
もしくは参考になるサイト等ありましたら、教えて頂けると幸いです。

ちゃっぴ さん 2008年 02月 22日 02時 02分 37秒

To らむ さん 2008年 02月 20日 10時 55分 42秒

どうせなら、command なぞ呼び出さずやりましょう。

Service の停止は2通りの方法があります。

Shell32.IShellDispatch2 class の ServiceStop method
http://msdn2.microsoft.com/en-us/library/bb774146(VS.85).aspx

Win32_Service class の StopService method
http://msdn2.microsoft.com/en-us/library/aa393673(VS.85).aspx

Folder の作成は File Scripting Object を使えば余裕でしょう。

管理人 牟田口大介 さん 2008年 02月 21日 18時 53分 59秒

お久しぶりです。
どうも色々忙しくて顔を出せてなくてごめんなさい。
ぜひ回答者求むーです。よろしくです。

To: らむさん

コマンドプロンプトの内部コマンドを実行するには
WshShell.Run "cmd /c mkdir C:\hogehoge"
ってかんじでしょうか。


To: ulysse さん

製品名はいくらでも変更できますのでWSHを騙っているだけなのではないかとも思います。


To: takさん

少しコードを書いてもらえないでしょうか、おっしゃってることがいまいちわかりません。


To: ADSI 挑戦中 さん

Set o = GetObject("LDAP://CN=daisuke, CN=Users, DC=winscript, DC=local")
msgbox o.Get("mail")

こんな感じですかね。ADSIはよくわからないので勉強しないと・・・

らむ さん 2008年 02月 20日 10時 55分 42秒

こんにちは。
少々、お知恵を拝借させてください。


WSH(vbscript)で以下のコマンドを発行したいのですが、可能でしょうか。
net stop
mkdir

別にbatファイルを作成して、runメソッドなどで呼び出しで実現できそうな事は記事でわかったのですが、WSHで直接発行したいです。

よろしくお願いします。

ulysse さん 2008年 01月 30日 20時 34分 45秒

こんにちは。
少し掲示板をお貸しください。
WSHについてはまったくわからない素人です。

先ほどインターネットからダウンロードしたフリーソフト(ファイル名setup.exe)をクリックしたところ、そのファイル自体が消えてしまいました、ウィルススキャンはかけたのですっかり安心しきっておりました。
ただ実行しただけで消えるプログラムだとは思えないのでおかしいなと思い
実行ファイルのプロパティーを見ると
正式ファイル名:stub.exe
製品バージョン:1.01
製品名:Windows Script Host
内部名:stub
と表示されていました。
Windows Script Hostに詳しい方がいらっしゃるこちらで聞けばなにかわかるのではないかと思ったしだいです。

こちらのサイトを見てみると「stub.exe」が自動的にウィルスをダウンロードすして実行するなどと書いてありやはり危険な様子です。
ttp://www.viruslistjp.com/viruses/encyclopedia/?virusid=40011

いったんネットワークの切断し完全スキャンをかけてみましたがウィルスなどの検出にはいたりませんでした。

その実行ファイルが実際にどのような動きをしたのかがわかればスッキリなのですが、実際のファイルは圧縮ファイルで残っているのでスクリプトなどは参照ないでしょうか?


どうぞよろしくお願いいたします。


tak さん 2008年 01月 29日 17時 41分 20秒

すみません。補足させていただきますが、先ほど書き込みましたVBSでのコメントの固定化の方法ですが、現在にてイメージングを使用してファイルの操作を行っています。
VBSにてCreateObject("Imaging.Application")でイメージングを起動させ、ファイル名を指定して開き操作を行っています。

tak さん 2008年 01月 29日 17時 36分 47秒

はじめまして。

現在、VBSでTIFF形式のファイルを編集する処理を作成しているのですが、VBSでのコメントの固定化の方法が分かりません。コメントが固定化しないとほかのファイル(たとえばEXCEL)上に画像を表示させたとき、コメント部分を表示させることができないので、VBSで一括してコメントの固定化を行っておきたいのですが、どなたか処理の分かる方はいませんでしょうか?(VBSでのコメント固定化の処理名が分からないのでコーディングもできません)

ADSI 挑戦中 さん 2008年 01月 27日 22時 45分 53秒

現在ADSIを利用して、ADの全般タブから必要な項目を出力し、それに基づいて処理を実行するスクリプトを作成しております。

出力する情報として、以下の4項目を考えております。
・アカウント名
・フルネーム
・説明
・メールアドレス

アカウント名とフルネーム、説明は出力できるのですが、メールアドレスを出力できません。
メールアドレスを表す関数がわかる方がおられたらお教えください。

ロートルタートル さん 2008年 01月 25日 11時 39分 22秒

>JP1からキックすると、
>「CScript エラー: 設定の読み込みに失敗しました。
同じ事象に遭遇し、この掲示板を見ました。
jp1で指定しているユーザ名で1回もログインしてないと発生しました。
ログインしてからやってみるか、別ユーザ名(admin)に変更してから、
試してみて下さい。

管理人 牟田口大介 さん 2008年 01月 19日 23時 28分 59秒

To: 困った困った さん

ちゃっぴさんからメッセージを受けまして訂正です。

CScript.exeの問題ではなく、cmd.exe の ACLが問題なのだそうです。下記URLを参考にしてくださいとのことです。

詳しくは下記参照

Task Scheduler で実行される user の logon type
http://blogs.wankuma.com/tyappi/archive/2007/07/08/84360.aspx

Windows Access Control
http://www.wankuma.com/seminar/20071006tokyo13/Default.aspx

管理人 牟田口大介 さん 2008年 01月 16日 18時 00分 54秒

To: 困った困った さん

すみません、JP1がよくわかりません。ただ、cscript.exeのACL設定がまずいような気がします。JP1というアプリケーション(?)のプロセスを動かしているユーザーがcscript.exeを実行できるようにしてみてはいかがでしょうか。

To: E11さん
記事を読んでいただきありがとうございます。

http://winscript.s41.xrea.com/wiki/index.php?%5B%5B%A5%A8%A5%C7%A5%A3%A5%BF%2FVWD2005%5D%5D
のWiki記事が参考になりませんでしょうか。

と、ちょっと手もとのVS 2005で試したところ補完機能は働きませんね・・・おかしいな? パラメータヒントはでますが・・・
すみません、ちょっと調査不足だったかもしれません。

あとあれ以降に出たソフトとしてこんなのもあります。
http://blogs.wankuma.com/mutaguchi/archive/2007/08/20/91018.aspx

E11 さん 2008年 01月 12日 18時 13分 53秒

初めて書き込みさせていただきます。
いつもこちらでVBSについて勉強させていただいております。

さて、VBScriptの補完機能について調べておりましたところ、管理人様が
執筆されている記事にたどり着きました。
http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh01/cformwsh01_03.html

そちらで得られた情報から"Visual Web Developer 2005 Express Edition"を
インストール及び実行してみましたが、補完機能が働きません。

設定などからintellisenseについて調べてみましたが関係する項目は見つける
ことが出来ませんでした。

補完機能の有効化する方法についてご教授いただけませんでしょうか?
よろしくお願いします。

困った困った さん 2008年 01月 08日 11時 11分 48秒

はじめまして。

Windows Server 2003 SP1 にて VBS でバッチを作成しています。

BATから「cscript XXX.vbs」を実行しています。
タスクスケジューラ・コマンドプロンプトからは正常に実行できますが、
JP1からキックすると、
「CScript エラー: 設定の読み込みに失敗しました。 (アクセスが拒否されました。 )」
が出力されます。

どなたか解決方法をご存知の方いらっしゃったらご教示願いますでしょうか。
よろしくお願い致します。

管理人 牟田口大介 さん 2008年 01月 03日 02時 09分 47秒

あけましておめでとうございます。
今年もよろしくお願いします。
表のカウンターが50万をまわってましたね。
3ねんがかりですけどw
9年ほどやってるので実際は150万位アクセスあるのかなと思います。
ありがとうございます。

morimotoさん、すみません、ちょっと私にはわかりかねます。どなたかフォローお願いします。

morimoto さん (morimoto@appletinc.co.jp) 2007年 12月 10日 14時 46分 54秒

はじめまして。morimotoと申します。

MetaFrame上からdbMagicというアプリケーションでVBSを実行し、Excel&Word&PDF等のファイルを指定したプリンタへ印刷しようとしているのですが、デフォルトプリンタへ出力されてしまいます。

プリンタ名のパラメータは『CreateObject("WbemScripting.SWbemLocator").ConnectServer.ExecQuery("Select * From Win32_Printer")』で一覧表示するプリンタ名と一致する為、特に問題が無いと思われるのですが。
うまく印刷されません。

ちなみに、ローカルで動作させると正常に指定プリンタへ印刷されます。

何かご存知の方はいませんでしょうか?

hiro さん (hiroh@fubako.com) 2007年 11月 25日 14時 06分 50秒

To: 管理人むたぐち さん
お答えありがとうございます。
ご説明のとおり、212行目、248行目をコメントアウトしてスクリプトを実行することで、
コピー元のフォルダは "Desktop.ini" が反映されたままになりました。
コピー先のフォルダは attribコマンドでフォルダにシステム属性をつけることで "Desktop.ini" が反映されるようになりました。
ありがとうございました。

この度はいろいろ大変勉強になりました。
まだまだ、パソコン初心者ですが、これから、こちらの掲示板やサイトをじっくり読んで、勉強したいと思います。

追伸
複数の "アイコンを変更したフォルダ" が入っているフォルダを開いた状態でスクリプトを実行させると、
勝手にどんどんアイコンが変わっていく様子が見られてちょっと面白かったです。

管理人むたぐち さん 2007年 11月 25日 01時 48分 29秒

To: hiroさん
ご利用ありがとうございます。
その現象は、バックアップに際し、ファイルまたはフォルダにシステムや読み取り専用属性などがついているとうまくバックアップできないことがあるので強制解除しているために起こります。desktop.iniはフォルダにシステム属性がないとうまく機能しないのです。
212行目          oSubFolder.Attributes = 0 '属性を解除する
248行目               oFile.Attributes = 0 '属性を解除する
をそれぞれ削除またはコメントアウトしてご利用ください。
ご迷惑をおかけして申し訳ありません。ですが、仕様としてどうかご了承ください。
壊れてしまったフォルダはコマンドプロンプトでattribコマンドを使うことで復旧できるかと思います。

hiro さん (hiroh@fubako.com) 2007年 11月 23日 07時 19分 34秒

はじめまして、hiro と申します。
最近このサイトのことを知り、いろいろ学びたいと思い始めたパソコン初心者です。
先日こちらで、「シンプルなバックアップスクリプト (simple_backup.vbs 1.00)」を
ダウンロードし使わせて頂きましたが、わからないことがあるので質問させて下さい。

私は一部のフォルダのアイコンを変更(「プロパティ」-「カスタマイズ」タブから)しているのですが、
"simple_backup.vbs ver.1.00"を使用して、アイコンの変更されたフォルダをコピーすると、
コピー先のフォルダもコピー元のフォルダもアイコンの変更が解除? され、普通のフォルダのアイコンになってしまいます。
(「マイピクチャ」や「マイミュージック」フォルダのアイコンも普通のフォルダアイコンになってしまいました。)
一応フォルダ内を確認すると"Desktop.ini"はちゃんとあって、ファイルの中も"simple_backup.vbs ver.1.00"使用前と変わってはいません。
しかし、"Desktop.ini"の内容が反映されなくなってしまうみたいです。
何度か再起動してみましたが、コピー前の(フォルダのアイコンを変更した)状態には戻りませんでした。
関係ないかもしれませんが、コピー元のドライブとコピー先のドライブを別にしても、同じにしても、同じ症状になります。
コピーそのものはちゃんと出来てますし、その他は問題ないようです。
が、どういう理屈でこのような症状が出るのかわからず不安です。
教えて頂けないでしょうか。

環境は、
Windows XP Home Edition SP2
IE Ver 6.0.2900.2180
です。よろしくお願いします。

追伸
アイコンの変更が解除されたフォルダは(コピー先、コピー元共に)、
「プロパティ」-「カスタマイズ」タブ-「アイコンの変更」-「既定値に戻す」-「キャンセル」
で元の("simple_backup.vbs ver.1.00"使用前)状態に戻りました。
「マイピクチャ」や「マイミュージック」フォルダは"Tweak UI"で修復しました。

管理人むたぐち さん 2007年 11月 08日 19時 31分 59秒

みなさまお久しぶりです。
体調崩してこちらへの出現頻度が落ちて申し訳ありません。

近況などブログに書きましたのでよかったらご覧くださいませ。

体調と講演とFizzBuzz問題と初音ミクと自作曲「Happy! Lucky! Scripting!!」
http://blogs.wankuma.com/mutaguchi/archive/2007/11/05/105917.aspx

検査異常なしということです
http://blogs.wankuma.com/mutaguchi/archive/2007/11/06/106284.aspx

suga さん 2007年 11月 06日 21時 44分 05秒

下で「隠しファイル、フォルダの詳細情報の取得方法」について質問した者です。
FileSystemObjectを使えば隠しファイルも取得できることがわかりました。
よく調べずに投稿してすいませんでした。

FileSystemObjectでフォルダ内のファイルを取得し、ファイル名を.ParseName後、Shell.Applicationに渡すことにより、詳細情報が取得できました。



あん さん 2007年 11月 06日 20時 55分 32秒

To olivie

こんにちはコマンドのDIRで代用できませんか?

DIR /B あるフォルダ\*.join > チェック用ファイル
あとは、チェック用ファイルがサイズ0以上だったら
ファイルは存在する。
あとでチェック用ファイルを削除する。

これでわからないなら時間がないので
コーディングは後日。。

suga さん 2007年 11月 06日 17時 38分 09秒

下で「隠しファイル、フォルダの詳細情報の取得方法」について質問した者です。
張るコードを間違えていました。


Set objShell = CreateObject ("Shell.Application")
Set objFolder = objShell.Namespace ("C:\folder")

Dim arrHeaders(15)
For i = 0 to 15
  arrHeaders(i) = objFolder.GetDetailsOf (objFolder.Items, i)
Next
For Each strFileName in objFolder.Items
  For i = 0 to 15
   Wscript.echo arrHeaders(i) & ": " & objFolder.GetDetailsOf (strFileName, i)
  Next
   wscript.echo "======================="
Next

suga さん 2007年 11月 06日 15時 52分 25秒

はじめまして。
ファイルの詳細を取得するvbsを作成していますが、隠しファイル、隠しフォルダが無視されます。(通常のファイル、フォルダは取得できます)

↓イメージです。実際には再帰処理でファイルにも接続しています。

Set objShell = CreateObject("Shell.Application")
objFolder = objShell.Namespace(strfname)
For i = 0 to 30
wscript.echo objFolder.GetDetailsOf(objFolder.Items, i)
next

これは仕様でしょうか?
隠しファイル、フォルダの詳細情報を取得する方法がありましたら、教えてください。


olivie さん (gotoh@yokohama.email.ne.jp) 2007年 11月 05日 21時 42分 35秒

初めまして。
VBSについての質問です。

複数のファイルの存在チェックを行いたいのですが、FileExistsメソッドではワイルドカードでのチェックはかけられません。
あるフォルダにファイルが1つでもあれば「存在する」というチェックを行いたいのです。
ファイルは"*.join"という決まりがあるだけで、数も大きさも不定です。

どうかよろしくお願いいたします。

D-BOY さん 2007年 10月 03日 21時 38分 27秒

WSH(VBS)を使用して、サーバ(Linux)にファイルをアップロードするスクリプトを作成しようと考えております。
その際、2点のロジックをどういう風にさせるかうまく思いつきません。

1.FTPサーバに接続する際、接続エラーとなった場合に接続エラーメッセージを表示する。
2.アップロード中に、途中でエラー(例:通信エラー、空き容量不足でアップロードできない等)が発生した場合、エラーメッセージを表示する。

お手数をおかけしますがご教授くださいますようお願い致します。

ちゃっぴ さん 2007年 09月 30日 16時 10分 13秒

To K さん 2007年 09月 28日 13時 02分 04秒

Security dialog が表示されるのは Outlook の仕様です。
これは Outlook の version によっても差異がありますが、基本的には outlook.exe と別の process からの呼び出しに対して反応します。
つまり、WSH でもどうしようもないということになります。

なので、outlook.exe の process 内で処理を行わないといけないわけですが、これを実現する方法として VBA のほかに COM addin があります。
COM addin を使ってみてはいかがでしょう?

管理人むたぐち さん 2007年 09月 30日 13時 28分 58秒

To: Kさん

<script for="OL" event="ItemSend(パラメタ)">
コード
</script>

じゃダメでしょうか?
他にもいくつか拾い方あったと思いますがわすれちゃいました。


To: kosyさん
ちょっとわかりませんねー。
フリーのActiveXコンポーネントにはそういう機能もあったかもしれません。
個人的にはアーカイバソフトを何か入れてそのコマンドラインを呼び出すのが一番素直かなと。


To: MKさん
Shift_JISなら問題なく動くと思うのですが・・・
文字コードを確認してみてください。

K さん 2007年 09月 28日 13時 02分 04秒

はじめまして。Kと申します。

HTAでActiveXのイベントを受信する方法はないでしょうか?
実際に受信したいのは、OutlookのItemSendイベントです。
Outlookでのメール送信直前に、誤送信チェックを実装するつもりです。

もちろんVBAなら可能なのですが、
職場内の様々なスキル(事務職含む)の方に使って頂きたく、
それぞれ必要なチェックのみを選んで使ってもらおうとすると、
直接VBAのコードを触ってもらうのは厳しいと思っています。

WSHであれば、「WScript.CreateObject」の第2引数を指定する事で、
「Outlook.Application」の任意のイベントを拾えるのですが、
WScriptからメールを参照するとセキュリティ警告popupが出るため、
実際の運用に耐えないと感じています。
(警告が出ないプロパティも一部ありますが、
ほとんどのプロパティ参照で出てしまいます。)

HTAならセキュリティ関係の問題はクリアされると思っていますが、
WScriptオブジェクトが利用できないためイベントを拾えません。
ActiveXObjectのnew(VBSの場合CreateObject)だと、
WScript.CreateObjectの第2引数に該当する識別子を指定できないため、
やはりイベントを拾えません。
objectタグも試してみましたが上手く行きませんでした。
(classidに"CLSID:0006F03A-0000-0000-C000-000000000046"を、
idに"OL"を指定して、「OL_ItemSend」、「OL.ItemSend」等実装しましたが、
やはり呼ばれないようです。)

どうにもやりようがなければ、一旦送信トレイにおく設定にして、
送信トレイをタイマーでチェックするような実装も考えていますが、
HTAでActiveXのイベントを受信する方法がありましたら、ご教授下さい。

kosy さん 2007年 09月 26日 17時 36分 48秒

はじめまして。
kosyといいます。

WSH(VBScript)によりZIPファイルの作成はできたのですが、
ZIPファイルにパスワードを付与することができません。

実際可能なのでしょうか?

よろしくお願いします。

MK さん 2007年 09月 21日 16時 46分 43秒

はじめまして。MKと申します。
WIN2003サーバ上でVBSのファイルを起動しようとしているのですが、
コンパイルエラーとなってしまいます。
「。」や「、」が使えないようなのです。
また、ダブルバイト文字をMsgBoxで出すと文字化けしています。
ちなみにWIN2000サーバでは普通に実行が出来ました。

何かご存知の方はご返答頂けると大変助かります。
よろしくお願い致します。

Return