ウィンドウズの細かい技

覚え書きです。最終更新日2019年6月16日。

「最近の話」の追記するときのテンプレートテキストを作成する。

qtclip PowerShell php の複合技になってしまって、自分でもなんでこんなややこしいことになったのか分からん。

まずはqtclipの設定行から。

*EX &ADDNEW:cmd /C "PowerShell php (フルパス)\add_new_text.php | clip"

そして add_new_text.php の中身

$timezone = new DateTimeZone('Asia/Tokyo');
$now = new DateTime('now', $timezone);

$id = $now->format('YmdHis');

preg_match('/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/', $id, $mt);

$title = $mt[1].'年'.intval($mt[2]).'月'.intval($mt[3]).'日'.intval($mt[4]).'時'.intval($mt[5]).'分'.intval($mt[6]).'秒';

echo mb_convert_encoding("<p id=\"PADD$id\"><span class=\"writeat\">({$title})</span></p>\r\n", 'SJIS-win', 'utf8');

ややこしいけどこれだけである。qtclip から PowerShell を呼び出すところがちとめんどうな感じ。

ひらがなファイルの検索

2019年2月14日

Vista か 7 か 8 か。いつ頃からかは分からないがファイル名にひらがなが使われているファイルの検索がヒットしなくなった。てにおはなどは問題ない。アーティスト名や作家名がひらがなの音楽や画像ファイルなどがヒットしない場合がある。そういうときは「*○○*」とアスタリスクで囲むとヒットする。まったく改善しないのでマイクロソフトは修正するつもりが無いみたいだ。

Window98 とかの Tips

メニューを早く表示させるためのレジストリキーはこちら。拡張子を REG にしてダブルクリック(自分のパソコンで検証済み)。要再起動。


ftsrch.dll はあると結構便利。

-------------------------
Windows の「ファイル名を指定して実行」で、以下のように書き込んでから
実行すると、SYSTEM フォルダに解凍されます。

              ↓CD-ROM のドライブを記入
EXTRACT /L C:\WINDOWS\SYSTEM F:\WIN95\WIN95_09.CAB ftsrch.dll
   番号は Windows のバージョンによって違う↑(例:_14.CAB)
-------------------------

実物はとりあえずこちら。system フォルダに入れておくとよい。


win98 セーフモード立ち上げは Ctrlの押しっぱなし。

ファイルとかの置き場

IE6 Setup
マイクロソフトのホームページではIE4とかではスクリプトエラーを起こすので、ダウンロードもできないのです。
DirectX 5 SDK
古いものです。今さらWin98のゲームとか作るんだったらどうぞ。DirectX 3 SDK も付録に付いてたものでよければあるけど、Win95/WinNT 4.0 のゲームを作ろうなんてことで、欲しい人がいたら連絡してください。

Vistaサイドバー

スライドショー日本語環境用

日本語環境ではいちいち zip フォルダの下を表示しようとしてエラーになっているので。

ファイルはVistaスライドショー日本語環境用を解凍してください。

解凍した SlideShow.Alt.Gadget フォルダを %USERPROFILE%\AppData\Local\Microsoft\Windows Sidebar\Gadgets\ に置きます。

ま、中身は

    if(curFolderObject.type != "Compressed (zipped) Folder")

    if(curFolderObject.type != "ZIP ファイル")

に変更しただけなんだけどね。

更新 2010年4月27日

この type という奴は解凍ツールによって名前が変わるようなので拡張子で見るようにしました。

    if(! curFolderObject.name.match(/\.zip$/i))

履歴

2009年9月28日
初版
2010年4月27日
マイピクチャが開けなかったときのエラー処理とzipファイル名の処理を汎用的にした。

ファイルのリネーム

2015年12月8日
初版

PowerShell を使うのだがTech TIPS:Windows PowerShellを使って複雑なパターンのファイル名変更を行うの記事だけでは分かりにくいところなどを。

Get-ChildItem <対象ファイル> | Rename-Item -NewName { $_.Name -replace '旧文字列','新文字列' }

PowerShellを起動しても文字化けしてうまくいかないことが多い。PowerShell ISE から作業した方が無難。

サブディレクトリのファイルを一気に置換するなら以下になる。

Get-ChildItem '.\**\*.*' | Rename-Item -NewName { $_.FullName -replace '旧文字列','新文字列' }

エスケープ方法

以下のような感じ。\ ではなく ` でエスケープする。

cd '.\`[長谷川`] 長谷川'

ffmpeg によるmp3作成のためのVBScript

2016年1月16日
初版

元ファイルがどこに置いてあっても固定のディレクトリに出力する。mp3 だったら再エンコードはしない。ファイル名の特定の文字列は置換している。スクリプトファイルにファイルかディレクトリをドラッグ&ドロップをする。

option explicit

const OUTDIR = "C:\Users\live-gon\Music\M11\"
dim shell
dim arg
dim fs
dim dir
dim ASYNC
dim regex

Set regex = new RegExp

ASYNC = False ' 非同期

If WScript.Arguments.Count < 1 Then
	WScript.Quit
End If

set shell = CreateObject("WScript.Shell")
set fs = CreateObject("Scripting.FileSystemObject")


for each arg in WScript.Arguments
	RecursiveConvert arg
Next

Sub RecursiveConvert(arg)
	dim f,sf,fi
	If fs.FolderExists(arg) Then
		Set f = fs.GetFolder(arg)
		For Each sf In f.SubFolders
			RecursiveConvert sf.Path
		Next
		For Each fi In f.Files
			Convert fi.Path
		Next
	Else
		Convert arg
	End If
End Sub

Function Convert(path)
	dim filename, extension, commandline, audiocodec
	filename = fs.GetFileName(path)
	filename = Left(filename, Len(filename) - 4)
	extension = fs.GetExtensionName(path)
	If extension = "mp4" Or extension = "flv" Then
		filename = RenameFilename(filename)
		audiocodec = GetAudioCodec(path)
		if audiocodec = "mp3" Then
			commandline = "ffmpeg -i """ & path & """ -vn -acodec copy """ & OUTDIR & filename & ".mp3"""
		Else
			commandline = "ffmpeg -i """ & path & """ -vn -acodec mp3 -b:a 64k """ & OUTDIR & filename & ".mp3"""
		End If


		If ASYNC = False Then
			shell.Run commandline, 1, True
		Else
			shell.Exec commandline
			WScript.Sleep 1000 * 10
		End If
	End If
End Function

Function RenameFilename(filename)
	regex.Pattern = "(\d{4})/(\d+)/(\d+)"
	filename = regex.Replace(filename, "$1年$2月$3日")
	regex.Pattern = "^s[mo]\d+_(.+)"
	filename = regex.Replace(filename, "$1")
	RenameFilename = filename
End Function

' Return 'mp3' or 'aac' or other
Function GetAudioCodec(path)
	GetAudioCodec = ""
	regex.Pattern = "Stream #0:\d.*Audio: +(\w+)"
	dim commandline, exe, line, matches
	commandline = "ffmpeg -i """ & path & """"
	Set exe = shell.Exec(commandline)

	Do Until exe.StdErr.AtEndOfStream
		line = exe.StdErr.ReadLine
		Set matches = regex.Execute(line)
		If matches.Count > 0 Then
			 GetAudioCodec = "" & matches(0).SubMatches(0)
			 Exit Function
		End If
	Loop
End Function