<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>「ちょっと調べます」のその後 &#187; VBScript</title>
	<atom:link href="http://qa.adddrv.com/category/vbscript/feed/" rel="self" type="application/rss+xml" />
	<link>http://qa.adddrv.com</link>
	<description>出先でこそ見たい、Windowsとアプリのちょっとした設定</description>
	<lastBuildDate>Fri, 06 Aug 2010 02:04:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://qa.adddrv.com/category/vbscript/feed/" />
		<item>
		<title>一定時間ごとにネットワークドライブの接続を行うVBScript</title>
		<link>http://qa.adddrv.com/2008/11/18/vbscript/network-drive-connect/</link>
		<comments>http://qa.adddrv.com/2008/11/18/vbscript/network-drive-connect/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 01:47:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[VBScript]]></category>
		<category><![CDATA[ユーティリティ]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[共有フォルダ]]></category>

		<guid isPermaLink="false">http://qa.adddrv.com/?p=22</guid>
		<description><![CDATA[一定の間隔を空けて指定回数分、ネットワークドライブの接続を行うスクリプトです。
常駐して一時間ごとにネットワークドライブの再接続を行う、といったものではありません。繋がれば役目を終えて終了します。
「ネットワークストレー [...]]]></description>
			<content:encoded><![CDATA[<p>一定の間隔を空けて指定回数分、ネットワークドライブの接続を行うスクリプトです。</p>
<p>常駐して一時間ごとにネットワークドライブの再接続を行う、といったものではありません。繋がれば役目を終えて終了します。</p>
<p>「ネットワークストレージの電源を入れて、バックアップ処理を行いたいけど立ち上がるのを待ってるのも面倒だし…」といった状況でのみ使います（笑）</p>
<p>オプションは、</p>
<ul>
<li>/F:　ネットワークの場所(\\SERVER\FOLDER　等）</li>
<li>/D:　割り当てるデバイス名(Z:　等)</li>
<li>/U:　ユーザー名</li>
<li>/P:　パスワード</li>
<li>/I:　インターバル時間(秒)</li>
<li>/C:　再試行回数</li>
<li>/M:　途中経過メッセージを表示する</li>
</ul>
<p>実際の起動例は、</p>
<blockquote><p>cscript nduse.vbs /D:Z: /F:\\SERVER\FOLDER /I:10 /C:30 /M</p>
<p>\\SERVER\FOLDER を Z:ドライブに割り当てる。</p>
<p>接続できないときは10秒ごとに、30回リトライする。</p>
<p>途中経過のメッセージを表示する。</p></blockquote>
<p>最終的に接続ができなかった場合には、ERRORLEVELに9を返しますので、ネットワーク接続がうまくいかなかったらそれ以降の処理はキャンセル、といったバッチが組めます。</p>
<p>バッチ例</p>
<blockquote><p>cscript nduse.vbs /D:Z: /F:\\SERVER\FOLDER /I:10 /C:30 /M<br />
if errorlevel 9 goto END<br />
コピー処理<br />
:END</p></blockquote>
<p>注意事項</p>
<ul>
<li>全ての環境でのテストは行っていませんのでうまく動かない場合があります。<br />
(XPProSP3でのみテスト済み)</li>
<li>特にユーザー、パスワードを指定した場合のテストが不十分です。<br />
(1回しかやっていません)</li>
<li>変更、修正はご自由にどうぞ。</li>
<li>「バグ」「もっとうまくやれる」情報がありましたら教えていただけると勉強になります。</li>
</ul>
<p><a href="http://qa.adddrv.com/soft/nduse.lzh">ダウンロード　nduse.lzh</a></p>
<blockquote><p>&#8216;nduse.vbs<br />
&#8216;<br />
&#8216;2008/11/17　作成　ADDDRV<br />
&#8216;<br />
&#8216;使用の手引き<br />
&#8216;<br />
&#8216;cscript nduse.vbs /D:ドライブ名 /F:フォルダ名 /U:ユーザー名 /P:パスワード<br />
&#8216;                  /I:待ち時間間隔（秒） /C:試行回数<br />
&#8216;                  /M:（メッセージ表示有り）<br />
&#8216;<br />
&#8216;ネットワークドライブの接続命令を待ち時間間隔を開けて試行回数分発行します<br />
&#8216;接続完了したときはERRORLEVELに0が、失敗した場合は9が返ります<br />
&#8216;<br />
Option Explicit</p>
<p>&#8216;パラメータ<br />
Dim Args</p>
<p>Dim objNetwork      &#8216; Networkオブジェクト<br />
Dim NetDrive        &#8216; /D:   ドライブ名<br />
Dim NetFolder       &#8216; /F:   フォルダ名<br />
Dim NetName         &#8216; /U:   ユーザー<br />
Dim NetPass         &#8216; /P:   パスワード<br />
Dim intInterval     &#8216; /I:   待ち時間<br />
Dim intLoopcount    &#8216; /C:   試行回数<br />
Dim intMess         &#8216; /M:   メッセージ表示</p>
<p>Dim I</p>
<p>&#8216;パラメータ取得<br />
Set Args = WScript.Arguments</p>
<p>&#8216;ドライブ名の取得<br />
NetDrive = Args.Named(&#8221;D&#8221;)</p>
<p>&#8216;フォルダ名の取得<br />
NetFolder = Args.Named(&#8221;F&#8221;)</p>
<p>&#8216;ユーザー名の取得<br />
If Args.Named.Exists(&#8221;U&#8221;) Then<br />
NetName = Args.Named(&#8221;U&#8221;)<br />
Else<br />
NetName = &#8220;&#8221;<br />
End If</p>
<p>&#8216;パスワードの取得<br />
If Args.Named.Exists(&#8221;P&#8221;) Then<br />
NetPass = Args.Named(&#8221;P&#8221;)<br />
Else<br />
NetPass = &#8220;&#8221;<br />
End If</p>
<p>&#8216;待ち時間の取得<br />
If Args.Named.Exists(&#8221;I&#8221;) Then<br />
If IsNumeric(Args.Named(&#8221;I&#8221;)) = False Then<br />
WScript.Echo &#8220;/I:は数字で指定してください&#8221;<br />
WScript.Quit (9)<br />
End If<br />
intInterval = CInt(Args.Named(&#8221;I&#8221;))<br />
Else<br />
intInterval = 0<br />
End If</p>
<p>&#8216;試行回数の取得<br />
If Args.Named.Exists(&#8221;C&#8221;) Then<br />
If IsNumeric(Args.Named(&#8221;C&#8221;)) = False Then<br />
WScript.Echo &#8220;/C:は数字で指定してください&#8221;<br />
WScript.Quit (9)<br />
End If<br />
intLoopcount = CInt(Args.Named(&#8221;C&#8221;))<br />
Else<br />
intLoopcount = 1<br />
End If</p>
<p>&#8216;メッセージ表示をする/しない<br />
If Args.Named.Exists(&#8221;M&#8221;) Then<br />
intMess = True<br />
End If</p>
<p>On Error Resume Next</p>
<p>&#8216;ネットワークオブジェクトの作成<br />
Set objNetwork = WScript.CreateObject(&#8221;WScript.Network&#8221;)</p>
<p>&#8216;既存のネットワークドライブがあれば切断<br />
objNetwork.RemoveNetworkDrive NetDrive, True, True</p>
<p>If intMess Then<br />
If Err.Number = 0 Then<br />
WScript.Echo &#8220;切断完了&#8221;<br />
Elseif Err.Number = -2147022646 Then<br />
WScript.Echo &#8220;切断完了(既存ドライブなし)&#8221;<br />
Else<br />
WScript.Echo &#8220;切断:&#8221; &amp; Err.Description &amp; &#8220;(&#8221; &amp; Err.Number &amp; &#8220;)&#8221;<br />
End If<br />
End If</p>
<p>For I = 1 To intLoopcount</p>
<p>&#8216;ネットワークドライブ接続<br />
objNetwork.MapNetworkDrive NetDrive, NetFolder, False, NetName, NetPass</p>
<p>If Err.Number = 0 Then<br />
If intMess Then<br />
WScript.Echo I &amp; &#8220;:割り当て完了&#8221;<br />
End If<br />
Set objNetwork = Nothing<br />
WScript.Quit (0)<br />
ElseIf Err.Number = -2147024811 Then<br />
If intMess Then<br />
WScript.Echo I &amp; &#8220;:割り当て完了(割り当て済み)&#8221;<br />
End If<br />
&#8216;正常終了<br />
Set objNetwork = Nothing<br />
WScript.Quit (0)<br />
Else<br />
If intMess Then<br />
WScript.Echo I &amp; &#8220;:接続:&#8221; &amp; Err.Description &amp; &#8220;(&#8221; &amp; Err.Number &amp; &#8220;)&#8221;<br />
End If<br />
End If<br />
&#8216;待ち時間<br />
If I &lt;&gt; intLoopcount Then<br />
If intMess Then<br />
WScript.Echo intInterval &amp; &#8220;秒後に再試行(あと&#8221; &amp; intLoopcount &#8211; I &amp; &#8220;回)&#8221;<br />
End If<br />
WScript.Sleep (intInterval * 1000)<br />
End If<br />
Next</p>
<p>&#8216;異常終了<br />
Set objNetwork = Nothing<br />
WScript.Quit (9)</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://qa.adddrv.com/2008/11/18/vbscript/network-drive-connect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://qa.adddrv.com/2008/11/18/vbscript/network-drive-connect/" />
	</item>
		<item>
		<title>MDB、MDEにSQLを発行するVBScript</title>
		<link>http://qa.adddrv.com/2008/11/13/access/mdb-mde-sql/</link>
		<comments>http://qa.adddrv.com/2008/11/13/access/mdb-mde-sql/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 05:48:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[ユーティリティ]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://qa.adddrv.com/?p=21</guid>
		<description><![CDATA[Accessランタイム環境下のMDB,MDEにSQLを発行するスクリプトです。
ランタイム上で動いているMDBのテーブルへの行追加、変更、削除のバッチ処理用です。
MDBと同じディレクトリに、

edtsql.vbs（ス [...]]]></description>
			<content:encoded><![CDATA[<p>Accessランタイム環境下のMDB,MDEにSQLを発行するスクリプトです。</p>
<p>ランタイム上で動いているMDBのテーブルへの行追加、変更、削除のバッチ処理用です。</p>
<p>MDBと同じディレクトリに、</p>
<ul>
<li>edtsql.vbs（スクリプト本体）</li>
<li>edtsql.sql（一文一行のSQL）</li>
</ul>
<p>を置いて、コマンドプロンプトから、</p>
<blockquote><p>cscript edtsql.vbs mdbファイル名.mdb</p></blockquote>
<p>で、コネクションの情報表示→SQLを表示しつつ実行されます。</p>
<p>注意事項</p>
<ul>
<li>テストはしてありますが、書かれているSQL次第で、かなり恐ろしいことになります。<br />
実行前には必ずMDBのバックアップを取ってください。<br />
結果的にデータベースその他諸々が破壊されたとしてもなんの保障もできません。</li>
<li>wscriptを使った実行も可能ですが、いちいちメッセージが出るのでうるさいです。</li>
<li>WindowsXP + Access2003環境でのみテストしてあります。<br />
OleDbが使えない場合や2007のACCDBではコネクションストリングの変更が必要です。<br />
変えれば動くかと言われても未検証なので自信はありません。</li>
<li>変更、修正はご自由にどうぞ。</li>
<li>「バグ」「もっとうまくやれる」情報がありましたら教えていただけると勉強になります。</li>
</ul>
<p><a href="http://qa.adddrv.com/soft/edtsql.lzh">ダウンロード　edtsql.lzh</a></p>
<p>edtsql.vbs</p>
<blockquote><p>&#8216;edtsql.vbs<br />
&#8216;<br />
&#8216;2008/11/13　作成　ADDDRV<br />
&#8216;<br />
&#8216;使用の手引き<br />
&#8216;<br />
&#8216;更新したいMDB,MDEと同じフォルダに置きます<br />
&#8216;実行させるSQLの条件<br />
&#8216;    1.SQLは1行1文です<br />
&#8216;    2.SQLのファイル名は「edtsql.sql」です<br />
&#8216;    3.edtsql.sqlはこのvbsと同じフォルダに置いて下さい<br />
&#8216;</p>
<p>Option Explicit</p>
<p>&#8216;パラメータ<br />
Dim Args</p>
<p>&#8216;パラメータ取得<br />
Set Args = Wscript.Arguments</p>
<p>&#8216;パラメータが無いときはエラー<br />
If Args.Count &lt; 1 Then<br />
WScript.echo &#8220;MDBファイル名を指定して下さい&#8221;<br />
Else<br />
&#8216;メインの処理<br />
Call subMain<br />
End If</p>
<p>Set Args = Nothing</p>
<p>&#8216;ここで終わり</p>
<p>&#8216;メインの処理<br />
Sub subMain()</p>
<p>&#8216;MDBファイルの名前（パスは、スクリプトと同じ場所）<br />
Dim MDBName</p>
<p>&#8216;MDBファイル名をパラメータからセット）<br />
MDBName = Args(0)</p>
<p>&#8216;ADOコネクションとコネクションストリング<br />
Dim Conn<br />
DIm Conn_String</p>
<p>&#8216;ファイルシステムオブジェクト<br />
Dim objFileSys<br />
Dim objFile</p>
<p>&#8216;SQLが入っているフルパス付ファイル名<br />
Dim FileName</p>
<p>&#8216;現在のパス<br />
Dim FilePath</p>
<p>&#8216;取得したレコード=投げるSQL<br />
Dim Record</p>
<p>&#8216;自パスの取得<br />
FilePath = Replace(WScript.ScriptFullName,WScript.ScriptName,&#8221;")</p>
<p>&#8216;ファイルシステムオブジェクトの作成<br />
Set objFileSys = CreateObject(&#8221;Scripting.FileSystemObject&#8221;)</p>
<p>&#8216;読み込むファイル名をフルパス付きで作成<br />
FileName = objFileSys.BuildPath(FilePath,&#8221;edtsql.sql&#8221;)</p>
<p>&#8216;ファイルのオープン（ReadOnly）<br />
Set objFile = objFileSys.OpenTextFile(FileName,1)</p>
<p>&#8216;ファイルがあればADOの処理へ<br />
If Err.Number=0 Then</p>
<p>&#8216;ADOコネクション作成<br />
Set Conn = CreateObject(&#8221;ADODB.Connection&#8221;)<br />
&#8216;コネクションストリング<br />
Conn_String = &#8220;Provider=Microsoft.Jet.OLEDB.4.0; Data Source=&#8221; &amp; FilePath &amp; MDBName &amp; &#8220;;&#8221;<br />
WScript.echo &#8220;Connecting &#8221; &amp; Conn_String</p>
<p>&#8216;MDBを開く<br />
Conn.Open Conn_String</p>
<p>&#8216;SQLの読み込み開始<br />
Do Until objFile.AtEndOfStream</p>
<p>&#8216;ファイル内容を1行読む<br />
Record = objFile.ReadLine</p>
<p>&#8216;表示しつつExecute<br />
WScript.echo &#8220;Execute &#8221; &amp; Record<br />
Conn.Execute Record</p>
<p>Loop</p>
<p>&#8216;ADOクローズ<br />
Conn.Close</p>
<p>Set Conn = Nothing</p>
<p>objFile.Close<br />
Set objFile = Nothing</p>
<p>Else<br />
Wscript.Echo FilePath &amp; &#8220;にedtsql.sqlがありませんでした。&#8221;<br />
End if</p>
<p>Set objFileSys = Nothing</p>
<p>End sub</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://qa.adddrv.com/2008/11/13/access/mdb-mde-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://qa.adddrv.com/2008/11/13/access/mdb-mde-sql/" />
	</item>
	</channel>
</rss>
