| タイトル | : 一行編集のパスの加工 |
| 記事No | : 5240 |
| 投稿日 | : 2026/05/31(Sun) 18:32 |
| 投稿者 | : や |
github.com/sharkdp/fd のfd(find)を使って実行ファイルパスリストや ディレクトリパスリストを作りたいと思います。 参考:gigazine.net/news/20250324-fd-find-alternative/ 実行ファイルは github.com/sharkdp/fd/releases/download/v10.4.2/fd-v10.4.2-x86_64-pc-windows-msvc.zip MacやLinux環境で動かしたいわけではなく、完全なWindows環境です。
書式は例えば以下のようになります。
%Ob fd -e exe -a . (path) > "%1\exepathlist.txt"
%Ob fd -t d -a . (path) > "%1\dirpathlist.txt"
(path)のところには、Windows環境であっても 区切りを/にするか、\\に変更したパスを入力する 必要があるみたいで以下3通りを試してみています。 出力はWindowsの\区切りで出てくるため、後加工は不要です。
(1)"%!1" → 手動で区切りを書き換え
(2)%*name(DCL,"%!1") → %*nameを使って\を/に加工
(3)%*regexp("%!1","s/\\/\\\\/g") → %*regexpを使って\を\\に加工 %*regexp("%!1","s#\\#/#g") → 同じく、\を/に加工
(1)でも問題なくできるのですが、区切りを都度書き換えるのは面倒なため (2)や(3)を(path)のところに挿入したいのですが、そうすると一行編集ダイアログが2度出てきます。
例えば、echo %*name(DCL,"%!1") や echo %*regexp("%!1","s/\\/\\\\/g") echo %*regexp("%!1","s#\\#/#g") として2度ダイアログが出るのを確認しています。 2度目のダイアログは、パスの後半だけ表示され、区切り文字が\から/や\\に置き換えられたものになります。 一行編集が出るのは"%!1"のところだけで、2度もダイアログ出てくることはないのではないかと思うのですが なぜこのような現象が起こるのかわからず、お手数ですがご教示いただけないでしょうか?
よろしくお願いいたします。
|