覚え書きです。最終更新日2019年6月16日。
qtclip PowerShell php の複合技になってしまって、自分でもなんでこんなややこしいことになったのか分からん。
まずはqtclipの設定行から。
そして add_new_text.php の中身
ややこしいけどこれだけである。qtclip から PowerShell を呼び出すところがちとめんどうな感じ。
2019年2月14日
Vista か 7 か 8 か。いつ頃からかは分からないがファイル名にひらがなが使われているファイルの検索がヒットしなくなった。てにおはなどは問題ない。アーティスト名や作家名がひらがなの音楽や画像ファイルなどがヒットしない場合がある。そういうときは「*○○*」とアスタリスクで囲むとヒットする。まったく改善しないのでマイクロソフトは修正するつもりが無いみたいだ。
メニューを早く表示させるためのレジストリキーはこちら。拡張子を REG にしてダブルクリック(自分のパソコンで検証済み)。要再起動。
ftsrch.dll はあると結構便利。
win98 セーフモード立ち上げは Ctrlの押しっぱなし。
日本語環境ではいちいち zip フォルダの下を表示しようとしてエラーになっているので。
ファイルはVistaスライドショー日本語環境用を解凍してください。
解凍した SlideShow.Alt.Gadget フォルダを %USERPROFILE%\AppData\Local\Microsoft\Windows Sidebar\Gadgets\ に置きます。
ま、中身は
if(curFolderObject.type != "Compressed (zipped) Folder")
を
if(curFolderObject.type != "ZIP ファイル")
に変更しただけなんだけどね。
この type という奴は解凍ツールによって名前が変わるようなので拡張子で見るようにしました。
if(! curFolderObject.name.match(/\.zip$/i))
PowerShell を使うのだがTech TIPS:Windows PowerShellを使って複雑なパターンのファイル名変更を行うの記事だけでは分かりにくいところなどを。
Get-ChildItem <対象ファイル> | Rename-Item -NewName { $_.Name -replace '旧文字列','新文字列' }
PowerShellを起動しても文字化けしてうまくいかないことが多い。PowerShell ISE から作業した方が無難。
サブディレクトリのファイルを一気に置換するなら以下になる。
Get-ChildItem '.\**\*.*' | Rename-Item -NewName { $_.FullName -replace '旧文字列','新文字列' }
以下のような感じ。\ ではなく ` でエスケープする。
cd '.\`[長谷川`] 長谷川'
元ファイルがどこに置いてあっても固定のディレクトリに出力する。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