2023年10月17日火曜日

rename時に特定の文字列を選択 or 数値を抽出

ファイル整理のために複数のファイルをリネームする際、「特定の文字列を別の文字列にする」「数値だけ取り出す」といった同じような操作を繰り返し行うことが多い。その作業を簡略化する。

準備

以下を編集して取込。

_Command = {
keywordrename = *rename "%R",%*input("%R" -title:"名前変更" -mode:e -select:l -k *find "%*arg(1)" -back)
intrename = *ifmatch 0,0%T %: *rename "%R",%*input("%*regexp("%R","/[^0-9]//g")" -title:"名前変更" -mode:e -select:fs) %: *stop
    *rename "%R",%*input("%*regexp("%Y","/[^0-9]//g").%T" -title:"名前変更" -mode:e -select:fs)
}

K_renamemode = {
R    ,*execute ,%si"renameexec"
ESC    ,*mapkey delete,K_renamemode %: *linemessage RENAME MODE END
0    ,*linemessage 通常のリネーム %: *string i,renameexec=%%K"@R"
1    ,*linemessage 指定したキーワードを選択状態に %: *string i,hoge= %"範囲選択するキーワード"%E %: *string i,renameexec=*keywordrename %%si"hoge"
2    ,*linemessage 数値を抽出 %: *string i,renameexec=*intrename
}

やり方

以下のコマンドを実行すると、Renameモードになる。

*mapkey use,K_renamemode %: *string i,renameexec=%%K"@R" %: *linemessage RENAME MODE [0-2]CHANGE MODE [R]RENAME [ESC]QUIT

キーバインドは以下の通り。

  • [R]:リネーム
  • [0]:通常のリネーム
  • [1]:指定したキーワードを選択状態に
  • [2]:数値を抽出
  • [ESC]:Renameモード終了

指定したキーワードを選択状態に

[1]を押すと表示される一行編集にキーワードを入力する。

[R]でリネームをする際、入力したキーワードが選択状態になる。

数値を抽出

[R]でリネームする際、ファイル名から抽出した数値が入力された状態になる。

2023年10月6日金曜日

ripgrep-allとPPxの連携

ripgrep-allでヒットしたファイルをPPcで表示したり、ハイライトしたりする。

必要なもの

nyagosはscoopとかchocolateyみたいなパッケージ管理ソフトでインストールするのがおすすめ。 ripgrep-allとPopplerについては以前の記事を参照。

準備

以下の2つのファイルをScriptフォルダに保存。

rga.lua

--ripgrep-all
--第一変数:検索語
--第二変数:対象フォルダ
--第三変数:出力ファイルパス
nyagos.exec('rga -l "' .. arg[1] .. '" "' .. arg[2] .. '" > "' .. arg[3] .. '"')
view raw rga.lua hosted with ❤ by GitHub

basename.js

//!*script
// 一行ごとにフルパスが記載されているファイルが対象
// フルパスをファイル名に変換
// 例:*script %0Script\basename.js,hoge.txt
// 第一引数 : ファイルパス
// 引数がなければ終了
if (PPx.Arguments.Length < 1){
PPx.SetPopLineMessage("引数が正しくありません。");
PPx.Quit();
}
var tempfile = PPx.Arguments(0);
// ファイルの有無をチェック
var fso = PPx.CreateObject("Scripting.FileSystemObject");
if (fso.FileExists(tempfile) == false) {
PPx.SetPopLineMessage(tempfile+"は存在しません");
PPx.Quit();
}
// 読み込み
var strLine = '';
var stream = new ActiveXObject("ADODB.Stream");
stream.type = 2; // -1:Binary, 2:Text
stream.charset = 'UTF-8';
stream.lineseparator = 10; // ' -1 CrLf , 10 Lf , 13 Cr
stream.open();
stream.loadFromFile(tempfile);
while(!stream.EOS){
var text = stream.readText('-2');
var str = fso.GetFilename(text) + "\n";
var strLine = strLine + str;
}
stream.close();
// 書き込み
writeFile(tempfile,strLine,"UTF-8");
// 書き込み用関数
function writeFile(fname, text, charset) {
if (charset == undefined) {
charset = "_autodetect_all";
}
var adTypeBinary = 1, adTypeText = 2;
var adSaveCreateNotExist = 1, adSaveCreateOverWrite = 2;
var adWriteLine = 1;
var s = new ActiveXObject("ADODB.Stream");
s.Type = adTypeText;
s.charset = charset;
s.Open();
s.WriteText(text, adWriteLine);
s.SaveToFile(fname, adSaveCreateOverWrite);
s.Close();
}
view raw basename.js hosted with ❤ by GitHub

やり方

ヒットしたファイルをPPcに表示

検索したいPDFフォルダに行き、以下のコマンドを実行。

*string o,tempfile=%*temp(name,f) %: %Oi nyagos -f %0Script\rga.lua "%E" "%1" %so"tempfile" %: *jumppath %so"tempfile"::listfile

ヒットしたファイルをハイライト表示

検索したいPDFフォルダに行き、以下のコマンドを実行。

*string o,tempfile=%*temp(name,f) %: %Ois nyagos -f %0Script\rga.lua "%E" "%1" %so"tempfile" %: *script %0Script\basename.js,%so"tempfile" %: *markentry -highlight:1 -list:%so"tempfile"

2023年10月5日木曜日

ripgrep-allをWindowsにインストール

複数のPDFからキーワード検索をするため、ripgrep-allをインストールした。 色々つまずいた上、ネット上ではあまり情報も載ってないようなのでその方法をメモ。おま環かもしれないが、公式に載ってるchocolateyを使う方法ではうまくいかなかった。

ripgrep-all

Releases ・ phiresky/ripgrep-allからripgrep_all-v1.0.0-alpha.5-x86_64-pc-windows-msvc.zipをダウンロード。

適当な場所に解凍し、環境変数のPATHを通す。

コマンドプロンプトやPowerShellで以下のコマンドを打ち込んで、パスが通っているか確認。

rga --version

以下のように表示されたらおk。

ripgrep-all 1.0.0-alpha.5

Poppler

PDFを検索するには、Popplerに入っているpdftotextが必要になる。

Releases · oschwartz10612/poppler-windowsからRelease-23.08.0-0.zipをダウンロード。

適当な場所に解凍し、環境変数のPATHを通す。

コマンドプロンプトやPowerShellで以下のコマンドを打ち込んで、パスが通っているか確認。

pdftotext -v

以下のように表示されたらおk。

pdftotext version 23.08.0
Copyright 2005-2023 The Poppler Developers - http://poppler.freedesktop.org
Copyright 1996-2011, 2022 Glyph & Cog, LLC

やり方

rga 検索キーワード 対象フォルダ

で検索できる。

参考