« 2011年11月 | トップページ | 2012年1月 »

2011年12月24日 (土)

「フォルダショートカット」を作る。(その2)

フォルダをドロップすると、同じところに、そのフォルダショートカットを作る。

FolderShortcut.vbs フォルダパス

Path=WScript.Arguments.Item(0) & " - ショートカット"
Set fso=CreateObject("Scripting.FileSystemObject")
fso.CreateFolder Path
fso.CreateTextFile(Path & "\desktop.ini").WriteLine "[.ShellClassInfo]" & vbCrLf & "CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}" & vbCrLf & "Flags=2"
With CreateObject("WScript.Shell").CreateShortcut(Path & "\target.lnk")
.TargetPath=WScript.Arguments.Item(0)
.Save
End With
With fso.GetFolder(Path)
.Attributes=.Attributes Or 1
End With

2011年12月23日 (金)

「フォルダショートカット」を作る。

「フォルダショートカット」を作る。

XPでは、ターゲットフォルダをスタートボタンにドロップする。スタートメニューから移動する。

Vistaでは、
ターゲットフォルダをCTRLとSHIFTを押しながらドロップする。
ターゲットフォルダを右クリック、SHIFTを押しながらショートカットの作成をクリックする。それを移動する。
ターゲットフォルダを右クリック、送る、SHIFTを押しながらデスクトップ(ショートカットを作成)をクリックする。それを移動する。
ネットワークショートカットフォルダ(shell:nethood)を開き、ターゲットフォルダをALTを押しながらドロップする。それを移動する。

Windows7では、
ネットワークショートカットフォルダ(shell:nethood)を開き、ターゲットフォルダをALTを押しながらドロップする。それを移動する。

手作業では、
1. フォルダを作成する。そこに、
2. ターゲットフォルダの普通のショートカットを作る。名前はtarget.lnk固定。
3. desktop.iniファイルを作る。
[.ShellClassInfo]
CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}
Flags=2
4. フォルダにreadonly属性を付ける。

変更したいときは、コマンドプロンプトでフォルダのreadonly属性を外す。
attrib -r フォルダ

2011年12月20日 (火)

フォルダ内のアイコンを任意の順序にする。(その2)

GUIで並びを変更します。並びの順にアクセス日時を変更します。

folder.hta [フォルダパス]

<html>
<head>
<meta charset="shift_jis">
<title></title>
<hta:application id="hta"/>
<script language=vbscript>
Option Explicit
Sub window_onload
Dim fQuoting
Dim k
fQuoting=False
For k=1 To Len(hta.commandLine)
  Select Case Mid(hta.commandLine,k,1)
  Case Chr(34) fQuoting=Not fQuoting
  Case Chr(32) If Not fQuoting Then Exit For
  End Select
Next
Dim Path
Path=Replace(Mid(hta.commandLine,k+1),"""","")
If Path<>"" Then
  NavigateX Path
Else
  BrowseForFolder
End If
End Sub

Sub BrowseForFolder
Dim Folder
Set Folder=CreateObject("Shell.Application").BrowseForFolder(0,"",0)
If Not Folder Is Nothing Then
  NavigateX Folder.Self.Path
End If
End Sub

Sub ChangeAccessTime
Dim oExec
Set oExec=CreateObject("WScript.Shell").Exec("powershell.exe ""$input | foreach {$i=[datetime]::today}{set-itemproperty -literalpath $_ -name lastaccesstime -value $i;$i=$i.addminutes(1)}""")
Dim FolderItem
For Each FolderItem In ShellFolderView().Folder.Items
  oExec.StdIn.WriteLine FolderItem.Path
Next
oExec.StdIn.Close
End Sub

Sub NavigateX(Path)
If Path<>"" Then
  document.title=Path
  WebOC.Navigate Path
  text.value=Path
End If
End Sub
</script>

<script language="JavaScript">
function ShellFolderView() {
  return WebOC.Document;
}
</script>
</head>
<body>
<div>
<INPUT type=button value="フォルダ参照" onclick="BrowseForFolder">
<INPUT type=text id="text" size=119>
<INPUT type=button value="フォルダ移動" onclick="NavigateX text.value">
<INPUT type=button value="並びを保存" onclick="ChangeAccessTime">
</div>
<object id="WebOC" classid="clsid:8856F961-340A-11D0-A96B-00C04FD705A2"  width="100%" height=400 VIEWASTEXT></object>
</body>
</html>

2011年12月10日 (土)

フォルダ内のアイコンを任意の順序にする。

コマンドプロンプトで、そのフォルダを開いて、ファイル名のリストを作成します。

dir /od /ta /b > order.ini

これをメモ帳で開いて、順番を入れ替えます。

アクセス日時を変更します。

powershell "$input | foreach {$i=[datetime]::today}{set-itemproperty -literalpath $_ -

name lastaccesstime -value $i;$i=$i.addminutes(1)}" < order.ini

エクスプローラでアクセス日時でソートします。

2011年12月 7日 (水)

ファイル内容の自動要約(AutoSummary)を表示する。

通常のエクスプローラでは自動要約カラムの枠が表示されますが、実際の中身が表示されません。検索結果では表示されます。

スクリプトでファイルの自動要約を取り出すことができます。

AutoSummary.vbs ファイル

Set fso=CreateObject("Scripting.FileSystemObject")
Path=fso.GetAbsolutePathName(WScript.Arguments.Item(0))
ParentFolderName=fso.GetParentFolderName(Path)
FileName=fso.GetFileName(Path)
Set Connection = CreateObject("ADODB.Connection")
Set RecordSet = CreateObject("ADODB.Recordset")
Connection.Open "Provider=Search.CollatorDSO;Extended Properties='Application=Windows';"
RecordSet.Open "SELECT System.Search.AutoSummary FROM SYSTEMINDEX WHERE SCOPE='file:" & Replace(ParentFolderName,"\","/") & "' AND System.FileName='" & FileName & "'", Connection
Do While Not Recordset.EOF
  AutoSummary=Recordset.Fields.Item("System.Search.AutoSummary")
  If IsNull(AutoSummary) Then AutoSummary="(null)"
  WScript.Echo AutoSummary
  Recordset.MoveNext
Loop

« 2011年11月 | トップページ | 2012年1月 »