2022年5月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
無料ブログはココログ

« 2011年8月 | トップページ | 2011年10月 »

2011年9月24日 (土)

履歴のすべてをインターネットショートカットに変換する。(その3)

履歴を「日付順に表示」風に
日付順フォルダ \ サイト順フォルダ \ 最終表示日 + タイトル
のインターネットショートカットに変換します。

HistoryByDate.vbs

Option Explicit
Dim fso
Dim Week
Dim WeekName
Dim Site
Dim SiteName
Dim FolderItem
Dim Url
Dim LastVisited
Dim Path
Dim Title
Dim Text
Dim RE

Set re=New RegExp
re.Pattern="[\x00-\x31\x7F-\xFF]"
re.Global=True
re.MultiLine=True
Set fso=CreateObject("Scripting.FileSystemObject")
With CreateObject("Shell.Application").NameSpace(34)
For Each Week In .Items
  WeekName=.GetDetailsOf(Week,0)
  If Not fso.FolderExists(WeekName) Then fso.CreateFolder WeekName
  With Week.GetFolder
  For Each Site In .Items
    SiteName=WeekName & "\" & .GetDetailsOf(Site,0)
    If Not fso.FolderExists(SiteName) Then fso.CreateFolder SiteName
    With Site.GetFolder
    For Each FolderItem In .Items
      URL=.GetDetailsOf(FolderItem,0)
      Title=.GetDetailsOf(FolderItem,1)
      LastVisited=.GetDetailsOf(FolderItem,2)
      Title=re.Replace(Title,"")
      Text="[InternetShortcut]" & vbCrLf & _
        "URL=" & Url & vbCrLf & _
        "[{5CBF2787-48CF-4208-B90E-EE5E5D420294}]" & vbCrLf & _
        "Prop23=64," & Replace(LastVisited," ",":") & ":00.000" & vbCrLf  & _
        "Prop21=31," & Title & vbCrLf
      Title=Replace(Title,":","")
      Title=Replace(Title,"\","")
      Title=Replace(Title,"/","-")
      Title=Replace(Title,"*","")
      Title=Replace(Title,"?","")
      Title=Replace(Title,"""","")
      Title=Replace(Title,"<","")
      Title=Replace(Title,">","")
      Title=Replace(Title,"|","")
      Title=Replace(Title,"&","")
      Title=Replace(Title,".","_")
      LastVisited=Replace(LastVisited,"/","-")
      LastVisited=Replace(LastVisited,":","-")
      Path=SiteName & "\" & LastVisited & " " & Title & ".url"
      If fso.FileExists(Path) Then
      Else
        On Error Resume Next
        fso.CreateTextFile(Left(Path,200),,True).Write Text
        If Err Then
          MsgBox Join(Array(Path,Escape(Path),Err.Description),vbCrLf)
          WScript.Quit
        End If
        On Error GoTo 0
      End If
    Next
    End With
  Next
  End With
Next
End With

カレントディレクトリに作成するので、作成先フォルダで実行するか、ショートカットを作って作業フォルダを指定して実行します。

説明カラム(タイトル)、URLカラムと最終表示日カラムを表示すれば、履歴フォルダと同等になります。

2011年9月22日 (木)

履歴のすべてをインターネットショートカットに変換する。(その2)

個々の履歴をお気に入りに追加したり、コピー貼り付けでインターネットショートカットに変えることはできますが、最終表示日は保存されません。

そこで、

history2url.vbs

Option Explicit
Dim fso
Dim Week
Dim Site
Dim Folder
Dim FolderItem
Dim Url
Dim LastVisited
Dim Path
Dim Title
Dim Text
Dim RE

Set re=New RegExp
re.Pattern="[\x00-\x31\x7F-\xFF]"
re.Global=True
re.MultiLine=True
Set fso=CreateObject("Scripting.FileSystemObject")
For Each Week In CreateObject("Shell.Application").NameSpace(34).Items
  For Each Site In Week.GetFolder.Items
    Set Folder=Site.GetFolder
    For Each FolderItem In Folder.Items
      URL=Folder.GetDetailsOf(FolderItem,0)
      Title=Folder.GetDetailsOf(FolderItem,1)
      LastVisited=Folder.GetDetailsOf(FolderItem,2)
      Title=re.Replace(Title,"")
      Text="[InternetShortcut]" & vbCrLf & _
        "URL=" & Url & vbCrLf & _
        "[{5CBF2787-48CF-4208-B90E-EE5E5D420294}]" & vbCrLf & _
        "Prop23=64," & Replace(LastVisited," ",":") & ":00.000" & vbCrLf  & _
        "Prop21=31," & Title & vbCrLf
      Title=Replace(Title,":","")
      Title=Replace(Title,"\","")
      Title=Replace(Title,"/","-")
      Title=Replace(Title,"*","")
      Title=Replace(Title,"?","")
      Title=Replace(Title,"""","")
      Title=Replace(Title,"<","")
      Title=Replace(Title,">","")
      Title=Replace(Title,"|","")
      Title=Replace(Title,"&","")
      Title=Replace(Title,".","_")
      LastVisited=Replace(LastVisited,"/","-")
      LastVisited=Replace(LastVisited,":","-")
      Path=LastVisited & " " & Title & ".url"
      If fso.FileExists(Path) Then
      Else
        On Error Resume Next
        fso.CreateTextFile(Left(Path,200),,True).Write Text
        If Err Then
          MsgBox Join(Array(Path,Escape(Path),Err.Description),vbCrLf)
          WScript.Quit
        End If
        On Error GoTo 0
      End If
    Next
  Next
Next

カレントディレクトリに作成するので、作成先フォルダで実行するか、ショートカットを作って作業フォルダを指定して実行します。

同じ履歴を重複して作成しないようにしているので、差分だけが追加されます。

タイトルをファイル名に使うと、ファイル名に使えない文字が変換されるので、タイトルを説明カラムに入れます。

説明カラム(タイトル)、URLカラムと最終表示日カラムを表示すれば、履歴フォルダと同等になります。

2011年9月19日 (月)

IEのタブを少なくとも1つは残す。

IEですべてのタブを閉じると、IEも終了します。なので、タブを少なくとも1つは残すようにします。

以下のhtmlファイルをホームページにします。

<!-- saved from url=(0014)about:internet -->
<html>
<head><title>Stay on page</title>
<script>
function window.onbeforeunload(){return "";}
</script>
</head>
<body>
Stay on page
</body>
</html>

スクリプトが動くようにインターネットゾーンかイントラネットゾーンにしておきます。

IEを起動したら、このページはそのままにして新しいタブを開いて使います。

2011年9月12日 (月)

エクスプローラのフォルダ詳細表示の1行全体選択をオフる。

詳細表示で開いているフォルダに対して1行全体選択をオフります。

FULLROWSELECT off.vbs

Const FWF_FULLROWSELECT = &H00200000
For Each ie In CreateObject("Shell.Application").Windows()
  If InStr(LCase(ie.FullName),"explorer.exe")=0 Then
  ElseIf InStr(TypeName(ie.Document),"IShellFolderViewDual")=0 Then
  ElseIf CLng(ie.Document.CurrentViewMode)=4 And CLng(ie.Document.FolderFlags) And FWF_FULLROWSELECT Then '4-詳細
    ie.Document.FolderFlags=CLng(ie.Document.FolderFlags) And Not FWF_FULLROWSELECT
  End If
Next

ただし、Vistaまで。

2011年9月 8日 (木)

「デスクトップアイコンの表示」を切り替える。

起動する度に表示、非表示を切り替えます。デスクトップに置いてると非表示から表示するとき困ります。:-)

ToggleDesktopIcons.vbs

Const FWF_NOICONS = &H00001000
Set Shell=CreateObject("Shell.Application")
Set ie=Shell.Windows().Item()
ie.Document.FolderFlags=CLng(ie.Document.FolderFlags) Xor FWF_NOICONS

2011年9月 4日 (日)

「名前を付けて画像を保存」でなく「対象をファイルに保存」する。

画像の右クリックで「名前を付けて画像を保存」が、オリジナルの名前と形式でなく、「無題.bmp」や「untitled.bmp」に化けてしまうことがあります。(IE9では.png)
これは<img src=URL>のURLでキャッシュを探して見つからないときにそうなります。

画像のプロパティからURLをコピーして、URLを指定して画像を開き、「名前を付けて保存」します。それでも、ダメな場合は、
<a href=URL>ほげ</a>
というhtmlファイルを作成して、開き、アンカを右クリックして「対象をファイルに保存」します。

あるいは、以下のブックマークレットを使います。

画像のプロパティからURLをコピーしてから、以下のブックマークレットを開いて、そのアドレスバー上でURLを書き換えます。

javascript:document.write('<a href="res://ieframe.dll/info_48.png">click</a>')

画像のプロパティからURLをコピーして、アドレスバーに貼り付けて画像を開き、次に以下のブックマークレットを開きます。

javascript:document.write('click'.link(location.href))

画像のプロパティからURLをクリップボードにコピーして、以下のブックマークレットを開きます。

javascript:document.write('click'.link(clipboardData.getData('text')))

ブックマークレットを開いたあと、画像を右クリックして「対象をファイルに保存」します。

vbscript:execute("For Each srcElement In document.images:set a1=document.createElement(""A""):srcElement.applyElement a1:a1.href=srcElement.src:Next")

javascript:for(var k=0;k<document.images.length;k++){var srcElement=document.images.item(k);var a1=document.createElement("A");srcElement.applyElement(a1);a1.href=srcElement.src;}void(0);

これらはページ内の<img>を<a><img></a>に変えます。

2011年9月 3日 (土)

バッチファイルで作るteeコマンド(その3)

PowerShellのone linerならバッチファイルに簡単に組み込めます。

unixのteeコマンドの分岐先はファイル出力ですが、標準エラー出力のほうが、汎用的です。

powershell -command "$input|foreach{[console]::out.writeline($_);[console]::error.writeline($_);}"

クリップボードに分岐するには、

PowerShell.exe -Sta -command "$input|tee-object -variable stdin;Add-Type -AssemblyName System.Windows.Forms;[Windows.Forms.Clipboard]::SetDataObject(($stdin|out-string),$true)"

« 2011年8月 | トップページ | 2011年10月 »