ばんのしゃーによかばんた さん 2005年 08月 27日 14時 35分 50秒

>oo さん 2005年 08月 26日 16時 52分 32秒
>luclin さん:
>また、IEを使う方法が、この掲示板のページ先頭の4つ目の★に説明があるFAQにあります。

この方法は、セキュリティレベルによっては動かないことがあるので、

>ばんのしゃーによかばんた さん 2004年 04月 05日 20時 49分 43秒

のほうを推奨します。


oo さん 2005年 08月 26日 17時 10分 02秒

mikinyan さん:

別ウィンドウでtelnetを開いて、そこに適当に sleep しながら sendkeys メソッドでキーを送れば操作は出来ると思いますが、途中でエラーになったらお手上げですね。
相手がunix/linuxなら、標準コマンドでやるにしても、telnetでなく、rsh.exe の利用を考えてはいかがでしょうか?

oo さん 2005年 08月 26日 16時 52分 32秒

luclin さん:

user32.dllを使う方法はわかりませんが、MSOfficeがインストールされていれば、

ばんのしゃーによかばんた さん 2005年 02月 25日 18時 17分 28秒

の記事に方法が書いてあります。
また、IEを使う方法が、この掲示板のページ先頭の4つ目の★に説明があるFAQにあります。

ばんのしゃーによかばんた さん 2005年 08月 26日 16時 52分 23秒

>管理人むたぐち さん 2005年 08月 25日 00時 01分 12秒
>でもウィンドウは要らないのでWSH用に書き直しちゃいました。

常駐WSHは、終了させたいときに困りませんか?

こちらは、WScript/HTA/IEなどが非表示で残ったときに便利です。
一覧の各RowをクリックするとTerminateします。
――――――――――――――――――――――――――――――――――――――
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=Shift_JIS'>
<title>TaskKill.HTA</title>
<script language=VBScript>
Option Explicit
Dim Items
Sub window_onload()
Dim Process
Dim n
Items=Array(_
"ProcessId",_
"ParentProcessId",_
"Name",_
"ExecutablePath",_
"CommandLine",_
"Priority",_
"ThreadCount",_
"CreationDate",_
"KernelModeTime",_
"UserModeTime",_
"VirtualSize",_
"WorkingSetSize")
Dim Item
Dim oTR
Dim oTD

oStatus.innerText="プロセスの検索中..."
Set oTR=oTable.insertRow
For Each Item In Items
 Set oTD=oTR.insertCell
 oTD.innerText=Item
Next

For Each Process In GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_Process")
 Call Write(Process)
 n=n+1
Next
oStatus.innerText=n&" 個のプロセス"
navigate "#bottom"
End Sub

Sub Write(Process)
Dim Values:ReDim Values(UBound(Items))
Dim k:k=-1
Dim oTR
Dim oTD
k=k+1:Values(k)=Process.ProcessId
k=k+1:Values(k)=Process.ParentProcessId
k=k+1:Values(k)=Process.Name
k=k+1:Values(k)=Process.ExecutablePath
k=k+1:Values(k)=Process.CommandLine
k=k+1:Values(k)=Process.Priority
k=k+1:Values(k)=Process.ThreadCount
k=k+1:Values(k)=Left(Process.CreationDate,14)
k=k+1:Values(k)=Process.KernelModeTime
k=k+1:Values(k)=Process.UserModeTime
k=k+1:Values(k)=Process.VirtualSize
k=k+1:Values(k)=Process.WorkingSetSize

For k=0 To UBound(Values)
 If IsNull(Values(k)) Then Values(k)=""
Next
Set oTR=oTable.insertRow
oTR.style.cursor="hand"
oTR.title="Kill "&Values(0)&" ?"
Set oTR.onclick=GetRef("Click")
For k=0 To UBound(Values)
 If Values(k)="" Then Values(k)=" "
 Set oTD=oTR.insertCell
 oTD.innerText=Values(k)
Next
End Sub

Sub Click()
Dim PID
PID=Me.Cells(0).innerText
If IsNumeric(PID) Then
 If KillProcess(CLng(PID)) Then
  Me.bgColor="teal"
 End If
End If
End Sub

Function KillProcess(PID)
Dim Process
For Each Process In GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_Process where ProcessID="&PID)
 Exit For
Next
If Not IsEmpty(Process) Then
 If MsgBox(Process.CommandLine,vbOkCancel+vbDefaultButton2,"Kill "&PID&" ?")=vbOk Then
  Process.Terminate
  KillProcess=True
 End If
End If
End Function
</script>
</head>
<body>
<button name='top' title='ページの末尾に移動します。' onclick='navigate "#bottom"'>ページの末尾</button>
<table id='oTABLE' border=1>
</table>
<span id='oStatus'></span>
<button title='プロセスを検索し直します。' onclick='document.execCommand "refresh"'>再表示</button>
<button title='一覧のHTMLソースをクリップボードにコピ−します。' onclick='clipboardData.setData "text",oTable.outerHTML'>コピ−</button>
<button name='bottom' title='ページの先頭に移動します。'onclick='navigate "#top"'>ページの先頭</button>
</body>
</html>
――――――――――――――――――――――――――――――――――――――


ばんのしゃーによかばんた さん 2005年 08月 26日 16時 52分 05秒

>魔界の仮面弁士 さん 2005年 08月 24日 19時 53分 23秒
>>> http://www.ocv.ne.jp/~oratorio/windev/vb/TypeLibrary/_CreateShortcut.cab
>> これ、Extract.exeが「壊れている」って言うんですが、確認して頂けませんか。
>こちらでは異常を確認できませんでした……。

ということなので、ブラウザを変えて、取り出してみたところ、OKでした。
古いブラウザの障害のようです。cabファイルだけ、おかしかったようです。
どうも、お騒がせしました。


oo さん 2005年 08月 26日 16時 43分 49秒

ミミズク さんへ:
エラーが出るのは、start.exe なるものが存在しないからでしょう。start は cmd.exe の組み込みコマンドです。

WshShell.Run "C:\hogehoge.bat " & """" &fname& """",2,True
か、
WshShell.Run "C:\hogehoge.bat " & """" &fname& """",0,True
ではどうでしょうか。

ばんのしゃーによかばんた さん 2005年 08月 26日 15時 24分 53秒

ショートカット関係の「障害」2件or3件です。

「障害-1」
FolderItem.GetLink.Path
が、長いURLを正しく返さない。途中(260バイト)でちょん切って返します。

wShell.CreateShortCut(FolderItem.Path).TargetPath
や、
FolderItem.GetLink.Target.Path
は、長いURLを正しく返します。

では、いつも、
wShell.CreateShortCut(FolderItem.Path).TargetPath
を使えばよいかと言うと、今度は、

「障害-2」
wShell.CreateShortCut(FolderItem.Path).TargetPath
が、FolderItem.Pathに&trade;などの非SJIS文字を含む場合、
正しいTargetPathを返さない。""になる。エラーにもならない。

では、いつも、
FolderItem.GetLink.Target.Path
を使えばよいかと言うと、今度は、

「仕様」で、「障害-3」かも?
FolderItem.GetLink.Path
がfile://...で、しかも、それが存在しないとき、
FolderItem.GetLink.Target
を参照したところで、
---------------------------
エラー:     エラーを特定できません
コード:     80004005
ソース:      (null)
---------------------------
となります。

結局、これらの「障害」や「仕様」の条件を微妙に避けながら、
複数の方法を組み合わせて使うことになります。:-<


ばんのしゃーによかばんた さん 2005年 08月 26日 15時 24分 21秒

「最近使ったフォルダ」が出来ると、その次に欲しくなるのは、
その無効エントリの削除じゃありませんか?
――――――――――――――――――――――――――――――――――――――
Option Explicit
Dim wShell
Dim Shell
Const ssfBITBUCKET=10
Dim RecycleBinFolder
Dim FolderName
Dim Folder
Dim k
Dim FolderItem
Dim Link
Dim ok:ok=0
Dim ng:ng=0
Dim etc:etc=0
Dim FolderItems:FolderItems=Array()
Dim Rows:Rows=Array()
Dim FileName
Dim Ans
Dim fso

Set wShell=CreateObject("WScript.Shell")
Set Shell=CreateObject("Shell.Application")
Set RecycleBinFolder=Shell.NameSpace(ssfBITBUCKET)
FolderName=wShell.SpecialFolders("Favorites") & "\リンク\最近使ったフォルダ\"
Set Folder=Shell.NameSpace(FolderName)
For k=Folder.Items.Count To 1 Step -1
 Set FolderItem=Folder.Items.Item(k-1)
 If FolderItem.IsLink Then
  Set Link=FolderItem.GetLink
  If Target(Link) Then
   ok=ok+1
  Else
   ReDim Preserve FolderItems(UBound(FolderItems)+1)
   Set FolderItems(UBound(FolderItems))=FolderItem
   FileName=Mid(FolderItem.Path,InStrRev(FolderItem.Path,"\")+1)
   ReDim Preserve Rows(UBound(Rows)+1)
   Rows(UBound(Rows))=FileName
   ng=ng+1
  End If
 Else
  etc=etc+1
 End If
Next
If UBound(Rows)=-1 Then
 MsgBox "正常"&vbTab&ok&vbLf&"エラー"&vbTab&ng&vbLf&"その他"&vbTab&etc,vbInformation,_
  "「最近使ったフォルダ」の無効なショートカット"
Else
 Ans=MsgBox("正常"&vbTab&ok&vbLf&"エラー"&vbTab&ng&vbLf&"その他"&vbTab&etc&vbLf&Join(Rows,vbLf),_
  vbQuestion+vbYesNoCancel,_
  "「最近使ったフォルダ」の無効なショートカット? Yes(ごみ箱) No(削除) Cancel(中止)")
 If Ans=vbYes Then
  For Each FolderItem In FolderItems
   Call Delete(FolderItem)
  Next
 ElseIf Ans=vbNo Then
  Set fso=CreateObject("Scripting.FileSystemObject")
  For Each FolderItem In FolderItems
   fso.DeleteFile FolderItem.Path
  Next
 End If
End If
WScript.Quit

Sub Delete(FolderItem)
Dim FileName
FileName=Mid(FolderItem.Path,InStrRev(FolderItem.Path,"\")+1)
RecycleBinFolder.MoveHere FolderItem
Do
 Set FolderItem=ParseName(Folder,FileName)
 If FolderItem Is Nothing Then Exit Do
 WScript.Sleep 100
Loop
End Sub

Function Target(Link)
On Error Resume Next
Target=InStr(TypeName(Link.Target),"FolderItem")
End Function

Function ParseName(Folder,FileName)
Set ParseName=Nothing
On Error Resume Next
Set ParseName=Folder.ParseName(FileName)
End Function
――――――――――――――――――――――――――――――――――――――


ばんのしゃーによかばんた さん 2005年 08月 26日 15時 23分 55秒

>管理人むたぐち さん 2005年 08月 25日 00時 01分 12秒
>でもウィンドウは要らないのでWSH用に書き直しちゃいました。

スクリプトは好みに合わせて自由に変えられるところがいいですね。

しかし、折角の苦労を。。。
苦労その1。
最初はWSHで作ったのですが、WSHだと終了インターフェースがないし、
動いているのが確認できるほうがいいかな、と思ってHTAにしたんですよ。

>リンクフォルダにショートカットを作った方が
>フォルダウィンドウからアクセスしやすいのでパスを変えました。

私の場合、どちらからでもアクセスし易いように、「リンク」に、
「SendTo」
「お気に入り」
「最近使ったファイル」
「履歴」
の「フォルダのショートカット」を置き、「お気に入り」には、
[リンク]
「SendTo」
「お気に入り」
「最近使ったファイル」
「履歴」
などの「ショートカット」(.lnk)を置いています。
なので、「最近使ったフォルダ」は「リンク」のほうがいいですね。
「最近使ったファイル」の隣になります。

>あと、ショートカットのタイトルはie.Document.Folder.Titleから
>取った方が見た目も綺麗なのでそうしました。
>(フルパスはショートカットにマウスポインタを当てると出ますし)
>パスはie.Document.Folder.Self.Pathから取りました。
>マイコンピュータなど特殊フォルダもこれでいけます。

苦労その2。
それだと、同名のケースが困りませんか?
「お気に入り」では、同名を置き換えますかと聞いてきますが、
自動なので、そういう訳にも行かないし。
「最近使ったファイル」では、同名の場合、(n)を付けて作っているくせに、
メニューでは、ひとつに縮約して表示するんです。
私の場合、100,101,102などの同名フォルダがやたらと多くて、
ぱっと見て区別が付くようにフルパス似を採用しました。
「お気に入りの追加」では、
<a href="...">C:\Folder\File</>
<a href="...">file://C:/Folder/File</>
は、CFolderFileに。NG
<a href="..."></>
は、Fileに。NG
<a href="...">C:/Folder/File</>
は、C-Folder-Fileに。これっぽくしました。


ばんのしゃーによかばんた さん 2005年 08月 26日 15時 23分 29秒

>ちゃっぴ さん 2005年 08月 24日 15時 36分 35秒
>FSOでの日本語共有名の文字化けに関する調査の最終報告です。
>5.6.0.6626 IE6, Windows XP nonSP, SP1 ○   
>5.6.0.8515 Windows Server 2003   ×化け
>5.6.0.8820 Windows XP SP2    ×
>5.6.0.8825 WSH 5.6.0.8825    ×
>5.6.0.8827 Windows Server 2003 SP1  ×
>というように、Windows Server 2003 Release時点から
>Bugが混入していたようです。
># ということは、2年以上も放置・・・

知ってる会社の話ですが、日本の会社では、障害は一旦、サポート部隊に入って、
既障害なら、サポート部隊から手持ちの修正が折り返し出る。
新規の場合は、開発部隊に転送されて、開発部隊で修正を作ってサポート部隊に渡す。
つまり、フィードバックループがあるので、修正するほど段々良くなります。
なのですが、海外の会社では、製品出荷後は、サポート部隊にソースを渡して、
サポート部隊が修正するんですね。サポートの修正方法は、もともとソースを
熟知している訳ではないので、あれこれソースを変えて現象が消えれば、出来上がり。
後は機械的にテストセットを流して、それが通れば出荷するんですね。
仮令、それに、レベルダウンがあっても、新規障害として別のサポートメンバに
機械的に割り当てられるので、フィードバックループが形成されないんです。

8515は、6626(XPサポート用?)とは別の2003開発用のコードパスかも。開発では、
出荷前に、サポートの作成した他バージョンの修正を一括してソース反映します。
クロスインテグレート。これが、一応は、人間がチェックするのですが、かなり
機械的なんですね。このとき、9x用のコードが2003用ソースに混入したのでしょう。
そしてまた、日本語の共有名のテストセットがあろうはずもなく、統合部隊や、
Quality Assurance部隊のテストもスルーして出荷ってことに。
そのソース管理権がサポート部隊に渡ったところで、XPサポート用コードパスを
オーバライドして統合。XP SP2でばら撒き。と想像。

もし、この通りだったら、修正を大量迅速に出そうとするより、
修正を作成するシステムを変えたほうが、早道だと思いますね。>MS


luclin さん 2005年 08月 26日 14時 43分 43秒

vbsファイルでクリップボードに値を貼り付けたいのですが、
どうしたらいいのか分かりません。

user32.dllを使うらしいのですが、
VBでの使い方しか調べられませんでした。

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

ミミズク さん (t-oishi@fa3.so-net.ne.jp) 2005年 08月 26日 09時 26分 49秒

初投稿です、よろしくお願いします。


複数ファイルをドラッグアンドドロップしてhogehoge.batに処理を
行わせようとしています。
hogehoge.batの実行時にコマンドプロンプトを表示させたくないた
め、STARTコマンドでコマンドプロンプトの最小化を指定しているの
ですが次のようなエラーが表示されうまく動きません。


 <エラー表示>
  スクリプト:**************
  行:    18
  文字:   4
  エラー:  指定されたファイルが見つかりません
  コード:  80070002
  ソース:  (null)


変数 fname にはフォルダ名にスペースを含むフルパスが渡されます。
これがおかしいのかと思い WScript.Echo で表示させて見たのです
が、望みどおりのコマンドを表示します。また表示されたコマンドを
コマンドプロンプトに直接入力すると正常に動作します。


 <入力例>
  start /min C:\hogehoge.bat "C:\Documents and Settings\foo\デスクトップ\hoge(050811).lzh"

間違いをご指摘願えないでしょうか、よろしくお願いします。

 <スクリプト>
--/ここから/----------------------------------------------------------

Dim WshShell
Dim fname
Dim msg

'---------------------------------------------------------------------
If WScript.Arguments.Count<1 Then
  msg =    "Drag and Drop"&Chr(10)&Chr(10)
  msg = msg & "ファイルをこのアイコンにドロップしてください。"&Chr(10)
  msg = msg & "複数ファイルをドロップすれば一括処理します。"
  MsgBox msg
  WScript.Quit
End If

Set WshShell = WScript.CreateObject("WScript.Shell")
For Each fname In WScript.Arguments

  WScript.Echo "start /min C:\hogehoge.bat " & """" &fname& """"
  WshShell.Run "start.exe /min C:\hogehoge.bat " & """" &fname& """",1,True

Next

--/ここまで/----------------------------------------------------------

管理人むたぐち さん 2005年 08月 25日 00時 16分 12秒

To: じゃんぬねっと さん

この前サンプルをお借りさせていただきました。
どうもです。

MSHをやり始めたこともあって.NET Frameworkを真面目に勉強する
必要がでてきたので今後もお世話になると思います。
よろしくお願いします。

管理人むたぐち さん 2005年 08月 25日 00時 01分 12秒

To: ばんのしゃーによかばんた さん

おおっ、これは良いですね。
でもウィンドウは要らないのでWSH用に書き直しちゃいました。

リンクフォルダにショートカットを作った方が
フォルダウィンドウからアクセスしやすいのでパスを変えました。
あと、ショートカットのタイトルはie.Document.Folder.Titleから
取った方が見た目も綺麗なのでそうしました。
(フルパスはショートカットにマウスポインタを当てると出ますし)
パスはie.Document.Folder.Self.Pathから取りました。
マイコンピュータなど特殊フォルダもこれでいけます。

Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set Shell = WScript.CreateObject("Shell.Application")
Set WshShell = WScript.CreateObject("WScript.Shell")
Set dic = WScript.CreateObject("Scripting.Dictionary")

sFolderName = WshShell.SpecialFolders("Favorites") & "\リンク\最近使ったフォルダ\"

If Not Fs.FolderExists(sFolderName) Then
     Fs.CreateFolder(sFolderName)
End If

Do
     Call Patrol()
     WScript.Sleep 5000
Loop

Sub Patrol()
     For Each ie In Shell.Windows
          If Not(ie.Busy Or ie.ReadyState <> 4) Then
               If InStr(TypeName(ie.Document),"IShellFolderView") Then
                    sPath = ie.Document.Folder.Self.Path
                    sTitle = ie.Document.Folder.Title
                    If dic.Exists(sPath) Then
                    Else
                         dic.Add sPath,1
                         Call AddHistory(sPath,sTitle)
                    End If
               End If
          End If
     Next
End Sub

Sub AddHistory(Path,Title)
     sFileName = Title
     sFileName = Replace(sFileName,":","-")
     sFileName = Replace(sFileName,"/","-")
     sFileName = Replace(sFileName,"\","-")
     Set oLink = WshShell.CreateShortcut(sFolderName & sFileName & ".lnk")
     oLink.TargetPath = Path
     oLink.Save
End Sub

魔界の仮面弁士 さん 2005年 08月 24日 19時 53分 23秒

》ばんのしゃーによかばんた さん 2005年 08月 24日 16時 15分 55秒
>> http://www.ocv.ne.jp/~oratorio/windev/vb/TypeLibrary/_CreateShortcut.cab
> これ、Extract.exeが「壊れている」って言うんですが、確認して頂けませんか。

extract.exe Version 5.00.2134.1 で確認しましたが、
こちらでは異常を確認できませんでした……。
また、 cab32.dll Version 0.98.0.0 でも問題ないようです。

ダウンロードされた cab ファイルは、
 ファイルサイズ: 12,584 バイト
 MD5ハッシュ: 832cc1541058e49c97d31085c69fb3d3
になっていますでしょうか?

ばんのしゃーによかばんた さん 2005年 08月 24日 16時 16分 24秒

>管理人むたぐち さん 2004年 06月 14日 17時 50分 37秒
>余談ですが、Win2000用に作った、folder.htt(htt2000)の機能の一つに、
>表示したフォルダの履歴をcookieに保存し、常時フォルダ内にリンク表示させる
>というのがあったんですけど、これをXPでWSHを使って再現できないか
>考え中だったりします。自分で言うのも何ですが、どうにもあの機能は捨てがたい…。

こんなのはどうでしょう?
――――――――――――――――――――――――――――――――――――――
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=shift_jis">
<title>「最近使ったフォルダ」の監視中...</title>
<script language=vbscript>
Option Explicit
moveTo 0,0
resizeTo 200,100

Dim FolderName

Sub window_onload()
FolderName=wShell.SpecialFolders("Favorites")
Call Patrol()
setInterval "Patrol",5000
End Sub

Sub Patrol()
Dim ie
Dim URL
For Each ie In ShellWindows
 If dic.Exists(ie.LocationURL) Then
 Else
  dic.Add ie.LocationURL,1
  URL=ie.LocationURL
  If Left(URL,8)<>"file:///" Then
  ElseIf ie.Busy Then
  ElseIf ie.ReadyState<>4 Then
  ElseIf InStr(TypeName(ie.Document),"IShellFolderView") Then
   Call AddHistory(URL)
  End If
 End If
Next
If document.parentWindow.screenLeft>0 Then
 If document.body.scrollwidth<>document.body.clientwidth Then
  resizeBy document.body.scrollwidth-document.body.clientwidth,0
 End If
End If
End Sub

Sub AddHistory(URL)
Dim Link
Dim FileName
Dim Title
Dim HTML

FileName=Mid(URL,9)
FileName=Replace(FileName,":","-")
FileName=Replace(FileName,"/","-")
FileName=Replace(FileName,"\","-")
FileName=Replace(FileName,"%20"," ")

Set Link=wShell.CreateShortcut(FolderName & "\最近使ったフォルダ\" & FileName & ".url")
Link.TargetPath=URL
Link.Save

Title=Mid(URL,9)
Title=Replace(Title,"/","\")
Title=Replace(Title,"%20"," ")
HTML=" <a href="&URL&">"&Title&"</a><br>"
document.body.insertAdjacentHTML "AfterBegin",HTML
End Sub

</script>
<hta:application innerborder=none windowstate=minimize />
</head>
<body style="background:menu;margin:0" nowrap >
<object id=ShellWindows classid=clsid:9BA05972-F6A8-11CF-A442-00A0C90A8F39></object>
<object id=wShell classid=clsid:72C24DD5-D70A-438B-8A42-98424B88AFB8></object>
<object id=fso classid=clsid:0D43FE01-F093-11CF-8940-00A0C9054228></object>
<object id=dic classid=clsid:EE09B103-97E0-11CF-978F-00A02463E06F></object><br>
</body>
</html>
――――――――――――――――――――――――――――――――――――――
HTAなので、Shell.Applicationでもよいのですが、
折角なので、ShellWindowsを使ってみました。

「お気に入り」の下に「最近使ったフォルダ」を作ってから、実行してください。


ばんのしゃーによかばんた さん 2005年 08月 24日 16時 15分 55秒

魔界の仮面弁士 さん、

>魔界の仮面弁士 さん 2004年 06月 09日 17時 21分 22秒
>標準では、IPersistFile用のタイプライブラリは用意されていないため、私は、
>VB6付属のMKTYPLIB.EXEを使って自作したTLBファイルを参照設定しました。
>http://www.ocv.ne.jp/~oratorio/windev/vb/TypeLibrary/_CreateShortcut.cab
 
これ、Extract.exeが「壊れている」って言うんですが、確認して頂けませんか。


ちゃっぴ さん 2005年 08月 24日 15時 36分 35秒

FSOでの日本語共有名の文字化けに関する調査の最終報告です。
 
5.6.0.6626 IE6, Windows XP nonSP, SP1  ○      
5.6.0.8515 Windows Server 2003     ×化け
5.6.0.8820 Windows XP SP2        ×
5.6.0.8825 WSH 5.6.0.8825        ×
5.6.0.8827 Windows Server 2003 SP1   ×

というように、Windows Server 2003 Release時点から
Bugが混入していたようです。
# ということは、2年以上も放置・・・

ところで、WSHが知らないうちにMinor Version Upしているようですが、
これの変更点ってご存知の人います?

それらしきDocumentは見つからないもので・・・
# Bugだけ混入しているなんてことはいやだな〜

じゃんぬねっと さん 2005年 08月 24日 12時 46分 36秒
URL:http://jeanne.wankuma.com/

あ、何かあたしのサイトが少し紹介されてる... (^-^*)

でで さん 2005年 08月 24日 12時 19分 41秒

To: 管理人むたぐち さん
>MS XML での操作 その1
>http://www.ki.rim.or.jp/~kuro/WebDAV/MSXML01.html
ありがとうございました。
LINUX指向の私ですが、windowsもなんかいろいろと面白そうだなと思いました。
あと、SAMBA共有で試したらうまくいきました。
ありがとうございました。

おやじ さん 2005年 08月 24日 08時 37分 51秒

To: 管理人むたぐち さん

emledit.vbsのバグを直していただいてありがとうございました。
修正版をさっそくDLして試してみました。バッチリです。
Outlook Expressの使い勝手がグンとよくなりました。
私もWSHを勉強したいのでよろしくお願いいたします。
それでは!

YZN さん 2005年 08月 24日 07時 33分 35秒

To: 管理人むたぐち さん
ご報告していただき、ありがとうございました。

To: ちゃっぴ さん
問題の発生を確認していただき、ありがとうございました。

本件は、Scriptのバージョンの問題ということで閉じたいと思います。
皆様、ありがとうございました。

管理人むたぐち さん 2005年 08月 24日 05時 08分 57秒

間違えて「←チェックを入れてください(spam対策)」を消してしまい、掲示板に投稿できない状態になっていました。
先ほど元に戻したので、現在は投稿できるようになりました。
ご迷惑をおかけして申し訳ありませんでした。

管理人むたぐち さん 2005年 08月 22日 23時 58分 52秒

To: でで さん

MS XML での操作 その1
http://www.ki.rim.or.jp/~kuro/WebDAV/MSXML01.html

XMLHTTPというコンポーネントを使ったWebDAVアクセスの方法を
見つけました。
個人的にも、こんなのあるんだ〜って感じです

ちゃっぴ さん 2005年 08月 22日 22時 54分 19秒

To mikinyan さん (mikinyan@tigers-net.com) 2005年 08月 22日 18時 46分 14秒

Logをあさりましょう。

Win32_Process Create Method あたりで検索してやると見つかるはずです。

ちゃっぴ さん 2005年 08月 22日 22時 42分 33秒

To: YZN さん

う〜む・・・こんなものがあったとは・・・

ちなみに

Windows XP SP2       5.6.0.8820
Windows Server 2003 SP1  5.6.0.8827

でも発生しますね。

管理人むたぐち さん 2005年 08月 22日 22時 16分 46秒

To: YZN さん

> 一応Microsoftのフィードバック等に上記内容を送信しました。
> # MVPの方って、MS担当者に、
> # この手(っぽい仕様)の連絡とかってできるんでしょうか?(汗
> # もし、そういうコネクションがあれば、伝えていただければと思います。

はい、担当者の方に問題を報告しておきました。

でで さん 2005年 08月 22日 21時 41分 42秒

To:管理人むたぐち さん
早速の回答ありがとうございます。
OSの仕様ということであれば仕方ないですね、
SAMBAによる共有を検討してみます。

SCRIPT側としての対応として、http経由でファイルのやり取りなどするにはなにかよい案などあれば教えていただけると幸いです。

SAMBAでの結果はまたご報告させていただきます。

mikinyan さん (mikinyan@tigers-net.com) 2005年 08月 22日 18時 46分 14秒

こんばんは、初めまして。
仕事上での質問になりますけど、どなたか教えて頂けませんか?

windowsに標準でついている「telnet」コマンドを使って、とあるサーバーに
自動的にログインして、コマンドを発行するようなことって、可能でしょうか?

標準でないツール(teratermのマクロとか)は利用できない状況です。
VBスクリプトとかでできれば嬉しいのですが、どうでしょうか?

すいませんが、教えて下さい。

YZN さん 2005年 08月 22日 15時 36分 02秒

>ばんのしゃーによかばんた さん 2005年 08月 21日 17時 47分 51秒
お返事ありがとうございます。

いくつかの日本語(2バイト)共有名で実験を繰り返しましたが、
文字化けする端末は、試した日本語全てが文字化けしました。
以前どこかで聞いた、特定の文字に依存するWindowsのバグでもないようです。

で、しばらく実験して気づいた重要な点があります。
文字化けがおきている端末は、
scrrun.dll : 5.6.0.8825
のバージョンのものでした。

文字化けがおきていないのは、
scrrun.dll : 5.6.0.6626 (... WinXP(SP1))
のバージョンでした。
# それ以外のバージョンについては、サンプルPC不足のため不明です。(汗
## セキュリティが厳しくなって、調査のために自由にいじれる端末が少ない・・・。

バージョン5.6.0.8825はおそらく直近のものと思われます。
問題のPCに対して、強制的に
5.6.0.6626の[scrrnjp.dll],[scrrun.dll]ファイルをコピーして試すと、
文字化けは出ませんでした。

多分、バージョンアップの際に含まれた
仕様という名のバXだと(勝手に)思っています。
# 5.6.0.6626は、もうダウンロードできないみたい・・・。
# 結構バージョンの数字があがっているし・・・。

一応Microsoftのフィードバック等に上記内容を送信しました。
# MVPの方って、MS担当者に、
# この手(っぽい仕様)の連絡とかってできるんでしょうか?(汗
# もし、そういうコネクションがあれば、伝えていただければと思います。

以上、ご報告まで。

うに さん (null) 2005年 08月 22日 14時 12分 17秒
URL:null

Nomu様
>などから察するに、ひょっとして、vbScript(WSH含む)の
>ヘルプファイル(1.7MBくらいのファイル。無償)をお持ちでない???
>もし、そうなら↓からダウンロードしてください。一家に一台必須かと。
>http://www.microsoft.com/japan/msdn/scripting/default.asp
>取り越し苦労なら読み飛ばしてください

恥ずかしながら、仰るとおりでした。
さっそくダウンロードしました。
使えそうなサンプルソースがけっこうありますね!
これは使えそうです。ありがとうございました。


むたぐち様

>このようにWshExecオブジェクトのStatusプロパティの値をみて
>ループを取ってやるのが確実です。

早速試してみます。
ありがとうございます。

僕もいろいろ試してみて
set objShell = WScript.CreateObject("WScript.Shell")
set objExec = objShell.Exec("cscript a.vbs")
str = objExec.stdOut.ReadAll
WScript.Echo(str)
set objExec = objShell.Exec("cscript b.vbs")
str = objExec.stdOut.ReadAll
WScript.Echo(str)




の用にやってみたところ、一応順番通りには動いてくれています。
でも確実ではないですね。
しかもこれだと、a.vbsやb.vbsが終了した時点で、ぱっ、と結果が表示され、
進行状態はわかりません。
やはりunixシェルと同じように・・・というのには無理があるのでしょうか・・・

>Runメソッドを使うならば、第三引数にTrueを指定すれば、アプリの実行を
>終了するまでスクリプトは停止します。こちらの方法でも良いでしょう。

こちらは簡単で良いですね!



ばんのしゃーによかばんた さん

>やりたいことは、CurrentDirectory? それともApp.Path? どっち?

お恥ずかしながら、今両方調べてみたのですが、
app.pathかなと思うのですが、両者の違いがよくわかりません・・・
取得したいのは、実行しているvbsと同ディレクトリにあるwarファイルを使いたかったのです。
少しいろいろいじってみます。

>それから、「の用に」は、「のように」と書きましょう。「の様に」は非推奨。

すみません。今後気をつけます。

>このページトップにも書いてあるように、この掲示板は、実は、!!!
>Windows Scripting Host Laboratory
>http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/
>の付属なんですね。

大丈夫です!わかっています!!
僕が物わかりが悪いだけです・・・

ついむっときていろいろ書き込んでしまいましたが、
お騒がせしてすみませんでした。

管理人むたぐち さん 2005年 08月 22日 06時 08分 40秒

To: おやじ さん

> emledit.lzhでemlファイルを開こうとしたら以下のようなエラーが出ました。

ありがとうございます。
イージーミスをしでかしてました。
本来ならばコンパイルエラーが出るスクリプトなんかを
公開するのは言語道断なんですが、ついうっかり
やってしまったようです、すみませんでした。
修正したスクリプトをアップロードしました。

管理人むたぐち さん 2005年 08月 22日 05時 33分 37秒

やっぱりXPからの新しい機能っぽいですね。
http://subversion.bluegate.org/doc/apbs04.html

管理人むたぐち さん 2005年 08月 22日 05時 21分 14秒

To: でで さん

エクスプローラ上で\\192.168.0.2\testのようなUNCパスが
見えないのがまさに原因と思われます。

FileSystemObjectはUNCパスをサポートしていますが、
UNCパスを介さないWebDAVアクセスはサポートしていないためです。
(WebDAVに詳しくないため、この表現が正しいかどうかは分かりません)

ここからはScriptの話とは関係なくなりますが…。
手元の環境でいろいろ試してみた結果、UNCパスでアクセスするには
何か条件があるみたいですね。私には分からなかったのですが、
いろいろ試した結果を参考までに書いておきます。

サーバー  クライアント   Webフォルダ  UNCでアクセス
2000    2000       ○      ×(注:ローカル)
2000    XP        ○      ○(ただしファイル名が化けるので使えない)
2000    2003       ○      ○(ただしファイル名が化けるので使えない)

XP     2000       ○      ×
XP     XP        ○      ○(注:ローカル)
XP     2003       ×      ×

2003    2000       ○      ×
2003    XP        ○      ×
2003    2003       ×      ×(注:ローカル)

※サーバーはそれぞれのOSに付属のバージョンのIISを用いています
※2000はXP上のVPCで動作しています
※2003はwebclientサービスを有効にしています
※「Webフォルダ」はWebフォルダとしてエクスプローラから開けることを示します

この実験結果から、最初の質問に戻って考察してみますと
WindowsXPからはUNCパスでWebDAVアクセスできるのに対し、
Windows2000からはできない理由は、単にサポートしてないだけ
なんじゃないかという気がしてきました。

でで さん 2005年 08月 21日 22時 58分 23秒

はじめまして、ででと申します。
windowsからlinuxサーバへログを収集するしくみを検討しています。
Linux上でWebDAVディレクトリを作成してwindowsからファイルをコピーするVBscriptを作ってみました(サイトからの流用ですが・・・)。
で、windowsXPからはうまくいったのですが、windows2Kからは失敗してしまいます。エクスプローラで参照する場合、
XPからは\\192.168.0.2\testで参照しているのですが、
windows2Kではhttp://192.168.0.2/testで参照しているようです。
以下にスクリプトを示します。
-----------------------------------------------------
<?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?>
<package>
<job id="MyBackUp">
<?job error="true" debug="true" ?>
<object id="objFs" progid="Scripting.FileSystemObject" />
<resource id="backup_config">
C:\Program Files\app\log.txt
</resource>
<script language="VBScript">
<![CDATA[
On Error Resume Next
Const MYFLD="\\192.168.0.2\test"
Set WshNetwork = WScript.CreateObject("WScript.Network")
WScript.Echo "Computer Name = " & WshNetwork.ComputerName
aryCnf=Split(getResource("backup_config"),Chr(13) & Chr(10))
For i=0 To UBound(aryCnf)
strPth=Trim(aryCnf(i))
If Not IsNull(strPth) And strPth<>"" Then
strDst=objFs.BuildPath(MYFLD,REPLACE(FormatDateTime(Date,2),"/",""))
strDst=objFs.BuildPath(strDst,"\")
WScript.Echo "作成フォルダ名 = " & strDst
If Not objFs.FolderExists(strDst) Then objFs.CreateFolder(strDst)
objFs.CopyFile strPth,strDst,True
WScript.Echo "コピーファイル名 = " & strPth
End If
Next
WScript.Echo("バックアップ処理が完了しました。")
]]>
</script>
</job>
</package>
-----------------------------------------------------
windows2Kの場合FileSystemObjectが使えないのかな?という気がしてます。
ただ、変わりにどのような方法があるのかが知識不足で悩んでいます。
(WSHやVBscriptさわるのも初めてなもので・・・)
解決方法をご指南いただけませんでしょうか?

ばんのしゃーによかばんた さん 2005年 08月 21日 17時 47分 51秒

>YZN さん 2005年 08月 10日 11時 04分 33秒
>Msgbox .GetFolder("\\MyPC\共有\AAA").Path  '(2)
>(2)\\MyPC\q(→)\AAA  (→)はTAB

s="共有"
For k=1 To Len(s)
 c=Mid(s,k,1)
 u=AscW(c)     'unicode
 If u<0 Then u=u+256*256
 hu=u \ 256     '上位
 lu=u Mod 256     '下位
 j=Chr(hu+lu*256)     'バイトスワップ/SJIS->unicode
 WScript.Echo j
Next


"共有"のunicode(little endian)をSJISだと思ってunicodeに変換すると、
"qTAB"に化けます。

>※問題が発生する端末と発生しない端末があるとかないとか・・・。

サーバ側OS(NT系?)が使っているコード系がunicodeで、
クライアント側OS(9x系?)が使っているコード系がShift JISとか?

クライアント側OSが、
>OS:WindowsXP(SP1)
ということは、FSOが変なのか?FSOにunicode/SJISの2系統がある?

よく知りませんが、もし、プロトコルに、文字コードが何かという情報が
載ってないのであれば、同じコード系同士で使うしかないのでしょう。
でなければ、共通なASCII文字セットだけを使う。

しかし、ASCII文字セットのunicode(little endian)がSJISとして読める
というのはどういうことでしょう?
1byte文字と2byte文字の区別だけはあるのかなぁ。
或いは、NUL文字を詰めるとか。
不思議。理解不能。謎です。


ばんのしゃーによかばんた さん 2005年 08月 21日 17時 47分 12秒

ここんとこ、about:blankを表示すると、そのie.LocationNameに、
それと関係ない、XXX.HTMと入るようになりました。
昔は、たしか、about:blankか(無題)のように入っていたと思うのですが、
どうなっているんでしょう。

どこかにキャッシュされた情報でも見ているのかと思うのですが、
レジストリを検索してもXXX.HTMは見つからず、
IEのCacheにもabout:blankやblank.htmは見つかりません。
謎です。


ばんのしゃーによかばんた さん 2005年 08月 21日 17時 46分 52秒

>門外漢 さん 2005年 02月 26日 21時 35分 52秒
>汎用インターネットゾーン。
><!-- saved from url=(0014)about:internet -->
>汎用イントラネットゾーン
><!-- saved from url=(0017)http://localhost/ -->
>汎用制限付きサイトゾーン
><!-- saved from url=(0007)http:// -->

ZoneIDを用いる方法もありますね。

というか、Mark of the Webは、Webサイトによる偽装の危険がある?ので、
ZoneIDは、Mark of the Webの対策後継機能なのかも。

任意のファイルにZoneIDを付けるバッチファイル。

ZoneID3.CMD
――――――――――――――――――――――――――――――――――――――
(
Echo [ZoneTransfer]
Echo ZoneId=3
) > "%~f1:Zone.Identifier"
――――――――――――――――――――――――――――――――――――――

1:イントラネットゾーン
3:インターネットゾーン
4:制限付きサイトゾーン

0や2は、マイコンピュータゾーンになりましたが、
どっちかが本来、信頼済みサイトゾーンなのかも。順に0、2かな。

ファイルの中身をいじらないのでいいかも。
でも、NTFSストーリムが知らぬ間に脱落する危険性がありそう。

プロパティページで外すか、ZIPに入れて戻す。
ただし、どこかにキャッシュが残るのか、変なときも。
一旦、ZIP外のを消して、他のフォルダに戻したほうがよいかも。


おやじ さん (otayori@vivajpn.com) 2005年 08月 21日 08時 53分 40秒

emledit.lzhでemlファイルを開こうとしたら以下のようなエラーが出ました。

行    30
文字   29
エラー   ステートメントの末尾が不正です
コード   800A0401
ソース   Microsoft VBScript コンパイルエラー

OSはWinXP Pro Ver2002 です。

ばんのしゃーによかばんた さん 2005年 08月 20日 20時 56分 51秒

思いますに、
お礼を言われたくて、レスしているひとは、あまりいない、と思います。
また、質問の仕方がよくなくて、一番困るのは本人ですから、
特に、自分が振り回されたとかの実害がない限りは、あまり気にしないことです。
マルチポストも、それ自体は問題ありません。

唯一、問題だと思うのは、一見さんが、過去記事も見ずに、
ちょっとだけ質問して、結果報告もせずに、ぱっと消えることです。
見ているひとには、回答記事の解が有効だったのか、どうか、が分からず、
折角の解の価値を著しく損ないます。

例えば、
>ばんのしゃーによかばんた さん 2005年 06月 28日 19時 28分 37秒
>>管理人むたぐち さん 2005年 06月 27日 18時 10分 29秒
>>To: まどく さん
>>> そのFortranのプログラムは、途中にPauseをかけてあります。
>>> そのPauseしたのを認識して、WSHの次のコマンドラインに移る方法ってありますか?
>>>この方法だと検索にメモリーを取られてしまうので、あまり実用的ではありません。
>どの辺が実用的でないのでしょう?
>監視ループで
>WScript.Sleep 1000
>とかしないで、CPUループしてるのではありませんか?
などです。※

そういうことがある度に、あー、レスなんか付けるんじゃなかった。と後悔します。

なので、通常、意図して亀レスになるよう心掛けてます。気付いてました?
亀レスなら、結果報告がなくても当然だと思えるし、
あれは一体どーなったかな?、とストレス溜めなくて済みます。
問題が一過性のものでなく、普遍的なら、亀レスでも有効なはずです。
また、ちょっと意地悪なようですが、正解は、一見さんには届かず、
常連さんには届きますからね。:-p

※実は、この質問はマルチポストのようで、そっちからの情報によると、
しっかりCPUループしてるんですが、そんなことは、
こっちの掲示板を見てるひとには、知る由もなく、
この質問者には、ばっきゃろー、てな気分です。


ばんのしゃーによかばんた さん 2005年 08月 20日 20時 56分 13秒

>Nomu さん 2005年 08月 19日 00時 30分 12秒
>>すぐにGetParentFolderNameをグーグルで調べたのですが、
>>あまりよい書籍がなくて・・・
>などから察するに、ひょっとして、vbScript(WSH含む)の
>ヘルプファイル(1.7MBくらいのファイル。無償)をお持ちでない???
>もし、そうなら↓からダウンロードしてください。一家に一台必須かと。
>http://www.microsoft.com/japan/msdn/scripting/default.asp

Nomu さんのお勧めに、もうひとつ、補足しますと、
このページトップにも書いてあるように、この掲示板は、実は、!!!
Windows Scripting Host Laboratory
http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/
の付属なんですね。
その本体のほうに、管理人むたぐちさんによる、入門的な解説やら講座が
あるんですけど、これらはご覧になってますでしょうか?

同様に、
>取り越し苦労なら読み飛ばしてください。

>うに さん (null) 2005年 08月 18日 12時 16分 13秒
>マッチョさん さん 2005年 08月 18日 11時 52分 23秒


ばんのしゃーによかばんた さん 2005年 08月 20日 15時 08分 24秒

>うに さん (null) 2005年 08月 18日 12時 05分 35秒
>これでpwdと同じ機能を実現できました。

pwdなら、

WScript.Echo CreateObject("Scripting.FileSystemObject").GetAbsolutePathName("")



WScript.Echo CreateObject("WScript.Shell").CurrentDirectory

でしょう。

やりたいことは、CurrentDirectory? それともApp.Path? どっち?

CurrentDirectoryならヘルプで、

App.Pathなら、これまた、このページ先頭にも書いてある、
Googleサイト内検索:
で過去記事を検索すれば、必要な情報が得られます。

それから、「の用に」は、「のように」と書きましょう。「の様に」は非推奨。
昔、マニュアルを書くときに、社内標準の「技術文書作成基準」で随分、仕込まれました。
これが、とってもよく出来とりまして、一般でも入手出来たらよいのですが、残念。


ばんのしゃーによかばんた さん 2005年 08月 20日 15時 07分 30秒

管理人むたぐちさん、
このページの先頭の「オンラインヘルプを〜」という部分は、
「オンラインでも見れますが、ヘルプファイルをダウンロードすることもできます。」
くらいのほうが、よくないでしょうか。最初、見たときに、?と思ったもので。

用語としては、きっと、定義通りで正しいんでしょう。
たぶん、オンライン〜は、紙媒体でない、電子化されたものを言うのでしょう。
でも、端末時代の用語で、語感がPC/ネットワーク時代には合わないような。
(ネットワークに)オフラインでオンラインヘルプを使う、みたいに。


ばんのしゃーによかばんた さん 2005年 08月 20日 15時 07分 14秒

.HTMファイルで、
Shell.Windows()が「書き込みできません」のエラーで使えない件ですが、
Shell.Applicationを使わず、
直接、ShellWindowsオブジェクトを使えばよいようです。ん、何それ?
これです。
<object id=ShellWindows classid=clsid:9BA05972-F6A8-11CF-A442-00A0C90A8F39>

MSDNの「Scriptable Shell Objects」というタイトルのページを参照。
ここに書いてあるclassidは役立たずばかりと思っていましたが、
そうでもなかったみたい。

Shell.Applicationが使えれば、全く必要のないものですが、
そっちが使えないなら、こっちの出番もあろうというものです。

ところで、
.HTMファイルで、Shell.Applicationが、オブジェクトの生成が可能なくせに、
メソッドの呼び出しで「書き込みできません」のエラーにするような、
訳の分からない仕様は、やめてほしいですね。
こういう仕様の一貫性/統一性の欠如はセキュリティホールの元になるだけです。
もし、それがセキュリティ対策で追加されたものなら、何をかいわんや、です。
セキュリティは原理原則でしか作れないはず。
アドホック/取り敢えずの対策(笊)を幾つ積み重ねても笊は笊です。
決して、鍋にはなりません。
それくらいのこと、MSのソフトウェアアーキテクトも分かってそうなものですが。


管理人むたぐち さん 2005年 08月 20日 05時 54分 52秒

To: うに さん (null) 2005年 08月 17日 20時 04分 06秒

> unixのシェルのように順番で実行したいのですが・・・

set objShell = WScript.CreateObject("WScript.Shell")
set objExec = objShell.Exec("cscript count1.vbs")
Do While objExec.Status = 0
   WScript.Sleep(100)
Loop
set objExec = objShell.Exec("cscript count2.vbs")
Do While objExec.Status = 0
   WScript.Sleep(100)
Loop

このようにWshExecオブジェクトのStatusプロパティの値をみて
ループを取ってやるのが確実です。

Runメソッドを使うならば、第三引数にTrueを指定すれば、アプリの実行を
終了するまでスクリプトは停止します。こちらの方法でも良いでしょう。

ばんのしゃーによかばんた さん 2005年 08月 19日 16時 15分 40秒

---------------------------
ファイルまたはフォルダ名の変更エラー
---------------------------
xxx の名前を変更できません。アクセスできません。
ディスクがいっぱいでないか、書き込み禁止になっていないか、
またはファイルが使用中でないか確認してください。
---------------------------

こういうときに、誰が使っているか、調べる方法はないのでしょうか?

「確認してください」と言いながら、確認する機能を提供してない、
なんてことは、まさか、ないですよね。

unixだとpfile?とかで見れたように思います。

メインフレームだとDISPLAY DSN=ファイル名??? 忘れた。
最初はなかったのでツールを作って公開したような。Q DSN=???

こういうツールはOSに必須ですよね。OS標準機能にない訳ない。

業務システムで、誰が使っているか、分からないので、
システムをリブートしてください、なんて言えませんよね。フツウ。


Nomu さん 2005年 08月 19日 00時 30分 12秒

>すぐにGetParentFolderNameをグーグルで調べたのですが、

>あまりよい書籍がなくて・・・

などから察するに、ひょっとして、vbScript(WSH含む)の
ヘルプファイル(1.7MBくらいのファイル。無償)をお持ちでない???

もし、そうなら↓からダウンロードしてください。一家に一台必須かと。
http://www.microsoft.com/japan/msdn/scripting/default.asp

取り越し苦労なら読み飛ばしてください。

うに さん (null) 2005年 08月 18日 19時 42分 27秒
URL:null

>ななし さん 2005年 08月 18日 09時 56分 39秒

解決したからいいや、などとは全く思っていません。
むしろ後でわからない人が検索をかけたときに
自分の書き込みが役に立てばと、なるべく解決詳細を書き込んでいます。
何度もいいますが、「書き込みをみて」いただけているならわかってもらえると思うのです。
少し前にも、名無しさんは書き込んでいるようですが
指摘している割に回答するでもなく、あなたこそいったいどういうつもりなのでしょうか?
もしかしたら(違ったら大変失礼ですが)回答者のかたのどなたかなのでしょうか?
だとしたら、人の揚げ足を取るようなことをするときばかり、
名前を変えて書き込むなんて卑怯だとおもいます。
後はあなたではなく、管理人のむたぐち殿に判断していただきたいと思います。
私の書き込みが不適切であるのなら、むたぐち様、削除をお願いします。

うに さん (null) 2005年 08月 18日 12時 16分 13秒
URL:null

>マッチョさん さん 2005年 08月 18日 11時 52分 23秒

>WindowsScript(でなくてもいいんですけどね!)を使用して、Cドライブ直下にある、テキストファイルの最下位に「3行」文字を追記したいのですが、どなたかサンプルスクリプトを頂けないでしょうか?修正履歴としてこのファイルの最下位にどんどん追加していくような仕組みがほしいのですが・


「3行」が具体的になにを追記したいかわからないのですが、

'***********************************
'* ファイル書き込みプロシージャ  *
'***********************************
sub txtwrite(str)
     Set Fs = CreateObject("Scripting.FileSystemObject")
     Set objFile = Fs.OpenTextFile("c:\log.txt",8,true)
     objFile.write str & vbCrLf
     objFile.close
end sub
'************************************

としておいて、
txtwrite(追加したい3行)


これで実現できませんか?

うに さん (null) 2005年 08月 18日 12時 05分 35秒
URL:null

>Nomu様

すぐにGetParentFolderNameをグーグルで調べたのですが、
一瞬どのようにつかったらいいかわからなかったため、後回しにしてしまいました。
大変申し訳ありません。

Set objFS = CreateObject("Scripting.FileSystemObject")
WScript.Echo objFS.GetParentFolderName(WScript.scriptfullname)

これでpwdと同じ機能を実現できました。
(単にpwdだけで良いのと比べるとかなりややこしいですね・・・)

Return