指定ファイルへのショートカットを検索したい



◇-指定ファイルへのショートカットを検索したい-たかし(2/17-08:32)No.1313
 ┣Re:指定ファイルへのショートカットを検索したい-沙門(2/17-09:54)No.1316
 ┃┣追記-沙門(2/17-10:01)No.1317
 ┃┃┗Re:追記に追記-o2ka(2/17-14:53)No.1330
 ┃┗Re:指定ファイルへのショートカットを検索したい-Cher(2/17-11:57)No.1320
 ┃ ┗Re:指定ファイルへのショートカットを検索したい-たかし(2/18-09:03)No.1413
 ┃  ┗Re:指定ファイルへのショートカットを検索したい(100行級長文。注意)-Cher(2/18-15:58)No.1428
 ┃   ┗ありがとうございました-たかし(2/18-20:19)No.1439
 ┗Re:指定ファイルへのショートカットを検索したい-kei100@パソ断ちしないと(ぉ(2/17-13:27)No.1323
  ┗Re:指定ファイルへのショートカットを検索したい-kei100@パソ断ちしないと(ぉ(2/17-21:44)No.1374
   ┣Re:指定ファイルへのショートカットを検索したい-Ai-net(2/17-22:05)No.1375
   ┃┗Re:指定ファイルへのショートカットを検索したい-Ai-net(2/17-22:07)No.1376
   ┗Re:指定ファイルへのショートカットを検索したい-o2ka(2/17-22:09)No.1378

▲このページのトップに戻る
1313指定ファイルへのショートカットを検索したいたかし 2/17-08:32

メーカー名:関連性なし
OS名:Windows98
パソコン名:不明
ソフト名:
--
特定のリンク先を持つショートカットを探し出すことは出来ないでしょうか。
(できれば、DOSレベルでの機能で)

▲このページのトップに戻る
1316Re:指定ファイルへのショートカットを検索したい沙門 2/17-09:54
記事番号1313へのコメント
たかしさんは No.1313「指定ファイルへのショートカットを検索したい」で書き
ました。
>OS名:Windows98
>パソコン名:
>ソフト名:
>特定のリンク先を持つショートカットを探し出すことは出来ないでしょうか。
>(できれば、DOSレベルでの機能で)
>

 ん?
 DOSコマンドで特定のショートカットを検索したいって事ですか?
 もし、そうなら可能です。
 ショートカットはエクスプローラ等では見えませんが「lnk」と言う拡張子が
付いていますので、例えば「TEST」と言うショートカットを検索したければ、
実際には「TEST.lnk」を検索すれば良い訳です。

 DOSコマンドで検索をする場合は以下のようにすると良いかと思います。


dir /a /s /b TEST.lnk


 細かく説明します。「/a」オプションを単独で付けると、不可視やシステム
属性等、全ての属性のファイルが対象に成ります。
 「/s」を付けると、深いディレクトリも再起的に検索してくれます。
 「/b」は、単に見栄えを良くします。フルパス表示してくれます。

 ちなみに、上の方法ではカレントフォルダ以下の検索ですが、特定のドライブ
や、フォルダ以下を再起的に検索する場合は、探したいファイルの前に繋げて
書く事で可能です。

dir /a /s /b c:TEST.lnk



ps.
 Windowsの検索を使ってショートカットを探す場合も拡張子「lnk」をつければ
可能です。
 念のため。

▲このページのトップに戻る
1317追記沙門 2/17-10:01
記事番号1316へのコメント
 普通ショートカットの拡張子は「lnk」ですが、DOSのバッチファイルのショート
カットの拡張子は「pif」です。(これもエクスプローラからは見えません)

 念のため。

▲このページのトップに戻る
1330Re:追記に追記o2ka 2/17-14:53
記事番号1317へのコメント
> 普通ショートカットの拡張子は「lnk」ですが、DOSのバッチファイルのショート
>カットの拡張子は「pif」です。(これもエクスプローラからは見えません)

ホームページへのショートカットは「url」です。

本文検索も、Windows標準の検索なら可能なんですけどね・・・。
例:
ファイルまたはフォルダの名前:*.url
含まれる文字列:ann.co.jp

ファイルまたはフォルダの名前:*.lnk
含まれる文字列:notepad

▲このページのトップに戻る
1320Re:指定ファイルへのショートカットを検索したいCher 2/17-11:57
記事番号1316へのコメント
>>特定のリンク先を持つショートカットを探し出すことは出来ないでしょうか。
>>(できれば、DOSレベルでの機能で)

> DOSコマンドで特定のショートカットを検索したいって事ですか?

ひょっとすると、

"notepad.exeへのショートカット"である"test.lnk"があるときに
"notepad.exe"をキーとした検索で"test.lnk"をヒットさせたい。

ということかも。

一応この場合も検索は可能です。
が、以下の制限がつきます。
・ピュアDOS(Command prompt onlyで立ち上げたとき)では検索できない。
 windowsのDOSプロンプトから実行するのは可能。
・私が作った簡易スクリプトになる(検索で見つからなかった)。
 よって無保証、低速、要Windows Scripting Host。

それでもよければ書きましょう。

でもこれを使えばいいんじゃないかな? DOSコマンドは無理だろうけど。
http://www.vector.co.jp/soft/win95/util/se115418.html

▲このページのトップに戻る
1413Re:指定ファイルへのショートカットを検索したいたかし 2/18-09:03
記事番号1320へのコメント
>ひょっとすると、
>
>"notepad.exeへのショートカット"である"test.lnk"があるときに
>"notepad.exe"をキーとした検索で"test.lnk"をヒットさせたい。
>
>ということかも。
その通りです。日本語が下手なものですみません。
そこまで読み取ってくださってありがとうございます。

>一応この場合も検索は可能です。
>が、以下の制限がつきます。
>・ピュアDOS(Command prompt onlyで立ち上げたとき)では検索できない。
> windowsのDOSプロンプトから実行するのは可能。
>・私が作った簡易スクリプトになる(検索で見つからなかった)。
> よって無保証、低速、要Windows Scripting Host。
>
>それでもよければ書きましょう。

お願いします。
ちょっと訳あって、windowsでの対話式ではなく、自動で検索、削除したいので。

▲このページのトップに戻る
1428Re:指定ファイルへのショートカットを検索したい(100行級長文。注意)Cher 2/18-15:58
記事番号1413へのコメント
>ちょっと訳あって、windowsでの対話式ではなく、自動で検索、削除したいので。

つくりました。
コピーして拡張子vbsで保存してください。
たぶんhtmlではインデントが消えてるので、ソースを表示してからコピーするのが吉。

test.vbsで保存したとして、コマンドラインから以下のように実行すればOKです。
cscript test.vbs [/r] TARGET [PATH]

各パラメータの意味や検索したものを削除する場合については
プログラムのUsageとSearchDir_Callbackをよんでください。

ちなみに、/rオプションをつけたときにPATHを指定しない場合、
ハードディスク内の全ショートカットを検索対象にしてしまいます。
これで削除する場合はバッチファイルを作ることを*強く*勧めます。

実行にはWindows Scripting HostとIE4以上が必要です。
Windows Scripting Hostはここで手に入ります。
http://www.microsoft.com/downloads/release.asp?ReleaseID=33248

# どーでもいいけどVBSの文法はよくわからん……。
# なんでProc(x)は通るのにProc(x, y)はダメですか?

-----------------------------------------
set FS = WSH.CreateObject("Scripting.FileSystemObject")
set TARGET = New RegExp
TARGET.IgnoreCase = True

sub SearchDir_Callback(file)
if file.IsLink then
if TARGET.Test(file.GetLink.Path) then
'ここでショートカットが取れるので適当に処理。
WSH.Echo file.Path, "->", file.GetLink.Path
'ファイルを消したいときは FS.DeleteFile(file.Path)
end if
end if
end sub

sub Usage
WSH.Echo "usage:"
WSH.Echo WSH.FullName, WSH.ScriptName, "[/r] TARGET [PATH]"
WSH.Echo "ショートカットファイルとそのリンク先を表示する"
WSH.Echo "パラメータ:"
WSH.Echo " /r(オプション):ディレクトリを再帰的に探索する。デフォルトは
オフ"
WSH.Echo " TARGET(必須):正規表現。リンク先がこれとマッチするものだけを
表示する"
WSH.Echo " PATH(オプション):検索するディレクトリ。デフォルトはデスクト
ップ"
end sub

SEARCH_PATH = 0
SEARCH_SUBDIR = False

call GetParams
set shell = WSH.CreateObject("Shell.Application")
set root = shell.NameSpace(SEARCH_PATH)
call SearchDir(root, SEARCH_SUBDIR)



sub SearchDir(dir, recursive)
for each item in dir.Items
SearchDir_Callback(item)
if recursive and item.IsFolder then
call SearchDir(item.GetFolder, recursive)
end if
next
end sub

function ParamExist(index, isoptional)
ParamExist = True
if WSH.Arguments.Count <= index then
ParamExist = False
if not isoptional then
call Usage
call Err.Raise(-1, WSH.ScriptFullName, "必須パラメータが
足りません")
end if
end if
end function

sub GetParams
set args = WSH.Arguments
index = 0

if ParamExist(index, True) then
if InStr(LCase(args(index)), "/r") = 1 then
SEARCH_SUBDIR = True
index = index + 1
end if
end if

if ParamExist(index, False) then
TARGET.Pattern = args(index)
index = index + 1
end if

if ParamExist(index, True) then
SEARCH_PATH = args(index)
index = index + 1
end if
end sub

▲このページのトップに戻る
1439ありがとうございましたたかし 2/18-20:19
記事番号1428へのコメント
vbs使ったことありませんので中身を理解するのはこれからですが、
これで勉強させていただきます。
ありがとうございました。

▲このページのトップに戻る
1323Re:指定ファイルへのショートカットを検索したいkei100@パソ断ちしないと(ぉ URL2/17-13:27
記事番号1313へのコメント
たかしさんは No.1313「指定ファイルへのショートカットを検索したい」で書きまし
た。
>OS名:Windows98

>特定のリンク先を持つショートカットを探し出すことは出来ないでしょうか。
>(できれば、DOSレベルでの機能で)

残念ながら、存じません。

探し出すとしたら、以下のような処理をするプログラムになるでしょう。

lnkファイルをすべて検索。
lnkファイルを一つづつ開いて、パスがあるか検索
当てはまるものがあれば、そのlnkファイルのパスを表示
となりそうです。

あるコマンドの出力をコマンドラインオプションに出来るなら
find /I "リンク先パス" `dir *.lnk /a-d /b /s`
ってやれば・・・って、ゴミが出るから駄目か・・・
# findは見つからなくても "-------- パス" というものを出力する

やっぱり自分でプログラムを組むしかないですね・・・
それとも、Vector辺りに転がってるのだろうか?

いずれにしろ、がんばってください(無責任モード

では。

▲このページのトップに戻る
1374Re:指定ファイルへのショートカットを検索したいkei100@パソ断ちしないと(ぉ URL2/17-21:44
記事番号1323へのコメント
とりあえず、DOSモードでも動作するであろう
BATファイルを5分ほどで作ってしまいました・・・
即席なので、バグだらけです(ぉぃ

# というか、受験勉強しろよ・・・来週試験だろ>自分

ファイルは2つになります・・・
# つーか、MS-DOSでforが複数行実行出来れば話は簡単だったし
# 1つのファイルにまとめられたのになぁ・・・

〜〜任意の名前.bat〜〜
@echo off
rem Usage: 任意の名前 "String" [PATH]
if "%2"=="" for %%F in (*.lnk) do CALL find2.BAT "%1" "%%F"
if NOT "%2"=="" for %%F in (%2\*.lnk) do CALL find2.BAT "%1" "%%F"

〜〜find2.bat〜〜
find /I %1 %2 >NUL
IF %ERRORLEVEL%==0 echo %2

以上・・・

処理内容は、目で追えばわかるかと(ぉぃ
現在判明している欠点&問題点:
サブディレクトリまで再帰的に検索不能。
IF ERRORLEVEL 0 では、きちんと動作せず・・・
# > NULの影響っぽい
検索する文字列に、カンマやスペースがあると誤作動する(爆死)

しかし、MS-DOSって標準入力をコマンドのパラメーターに渡せないのかなぁ
それとも出来るのでしょうか?
ご存知の方御教授ください・・・

では。

▲このページのトップに戻る
1375Re:指定ファイルへのショートカットを検索したいAi-net 2/17-22:05
記事番号1374へのコメント
kei100@パソ断ちしないと(ぉさんは No.1374「Re:指定ファイルへのショートカットを検索したい」で書きました。

># というか、受験勉強しろよ・・・来週試験だろ>自分
>
>ファイルは2つになります・・・
># つーか、MS-DOSでforが複数行実行出来れば話は簡単だったし
># 1つのファイルにまとめられたのになぁ・・・
>
>〜〜任意の名前.bat〜〜



ど初心者には、まったく分からないでしょう。

そんなことより、いまの自分のことをやりましょう。
(今にか機会がないんだよ)

▲このページのトップに戻る
1376Re:指定ファイルへのショートカットを検索したいAi-net 2/17-22:07
記事番号1375へのコメント

(今しか機会がないんだよ)
って、まちがえたけど。。。

▲このページのトップに戻る
1378Re:指定ファイルへのショートカットを検索したいo2ka 2/17-22:09
記事番号1374へのコメント
>〜〜任意の名前.bat〜〜
>@echo off
>rem Usage: 任意の名前 "String" [PATH]
>if "%2"=="" for %%F in (*.lnk) do CALL find2.BAT "%1" "%%F"
>if NOT "%2"=="" for %%F in (%2\*.lnk) do CALL find2.BAT "%1" "%%F"
>
>〜〜find2.bat〜〜
>find /I %1 %2 >NUL
>IF %ERRORLEVEL%==0 echo %2
>
>以上・・・

%1, %2については、解説無しですかい?
ってか、「find /?」でオプションを確認すればわかるけど・・・。
 ↑FIND [/V] [/C] [/N] [/I] "文字列" [[ドライブ:][パス]ファイル名[...]]
  %1が「文字列」の引数で、%2が「ファイル名」の引数ですね。

>現在判明している欠点&問題点:
>サブディレクトリまで再帰的に検索不能。
>IF ERRORLEVEL 0 では、きちんと動作せず・・・
># > NULの影響っぽい
>検索する文字列に、カンマやスペースがあると誤作動する(爆死)

この辺は、フリーのCコンパイラをダウンロードして
Cでツールを作成してもらうしかないのかな(って、それなら
もっと色々できるじゃん)。

http://www.borland.co.jp/cppbuilder/freecompiler/

A1.本ページは参考になりましたか? 又はアドバイスがありますか?
解決 参考になった 参考にならなかった アドバイスする

A2.何度目の訪問ですか?
初めて来た   数度目(2〜4) 5回以上来ている   管理人:

A3.何か一言どうぞ(アドレスは書くことができません)

A4.アドレスがあればどうぞ(1つまで)


↑↑↑↑よろしければ押してください↑↑↑↑

何か一言(本ページで参考になったならないを含めて残してあります)
◎:解決 ○:参考になった ×:参考にならなかった !:アドバイスあり

参考回数投稿日時何か一言