● UWSCにて、Windows2000で、現在開かれている共有ファイルのフルパスを文字列で取得する方法(コマンドラインでの処理ができるように)
コマンドプロンプトにて、「openfiles /Query /FO CSV /NH」で求めることができるかもしれませんが、それだと都合が悪いとき、などに使います。
Windows2000には、openfiles コマンド自体がありませんので、本記事のような方法もひとつの手段かと思います。
※openfiles コマンドでも、管理画面からでも、「現在開かれている共有ファイルのフルパスリスト」ではtxtやjpgやbmpなどの、「最初からWindowsで開けるファイル」はフルパスが取得できないみたいです。VBSやPowerShellなどでならできるのかもしれません。それに対して、xlsやxlsx、pdf、といった、あとから追加するソフトに依存する拡張子の場合は、フルパスが取得できます。
なお、以下のUWSCのコードですが、Win2000しか使えないかもしれません。(試してませんが・・・)
とりあえず、Win10では動きませんでした。
事前にDドライブに「ShareOpenFileFullPath.txt」というテキストファイルを作ってから実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
// // //「ファイル名を指定して実行」を開く KBD(VK_WIN,DOWN,100) ACW(GETID("ファイル名を指定して実行","#32770"),8,521,413,213,0) KBD(VK_R,CLICK,100) KBD(VK_WIN,UP,100) //●「ファイル名を指定して実行」での操作 Fsjid=getid("ファイル名を指定して実行","#32770") //「ファイル名を指定して実行」のダイアログのIDを取得します SENDSTR( Fsjid, "compmgmt.msc") //テキストボックスに「compmgmt.msc」と自動入力。(「compmgmt.msc」とは、「コンピュータの管理」画面のことです。) clkitem(Fsjid,"OK",CLK_ACC) //「OK」ボタンを押します。 //●「コンピュータの管理」画面が開くまで待ちます。「15」という数字はパソコンのパワーによって短くしても大丈夫です。 SLEEP(15) //●「コンピュータの管理」の画面での操作 MMCid=getid("コンピュータの管理","MMCMainFrame") //「コンピュータの管理」の画面のウィンドウのIDを取得します。 clkitem(MMCid,"コンピュータの管理 (ローカル)",CLK_TREEVEW) //念のため、画面左側のツリービューをいったんクリック。 clkitem(MMCid,"コンピュータの管理 (ローカル)\システム ツール\共有フォルダ\開いているファイル",CLK_TREEVEW) //「共有フォルダ」「開いているファイル」と開いていきます。 SCKEY(MMCid,VK_SHIFT,VK_F10) //「開いているファイル」を右クリック。 SCKEY(MMCid,VK_L) //「一覧をエクスポート」を確定します。 //●通常の「名前を付けて保存」ダイアログの操作 NameSaveid01=getid("名前を付けて保存","#32770") //●通常の「名前を付けて保存」ダイアログのウィンドウのIDを取得。 SENDSTR(NameSaveid01,"D:\ShareOpenFileFullPath.txt") //ファイル名に「D:\ShareOpenFileFullPath.txt」とフルパスで指定。フルパスで指定すると、いちいち、場所をクリックで変える必要がありません。 clkitem(NameSaveid01,"保存",CLK_BTN) //「保存」ボタンを押します。 //●「"D:\ShareOpenFileFullPath.txt は既に存在します。上書きしますか?"」のほうの「名前を付けて保存」ダイアログの操作 NameSaveid02=getid("名前を付けて保存","#32770") //上書きを問い合わせるダイアログのウィンドウのIDを取得。 KBD(VK_Y, CLICK) //「はい」で上書き保存します。 //clkitem(NameSaveid02,"はい",CLK_BTN) //上のコードでだめならこちらを試します。「はい」で上書き保存します。 // // |
出力されたファイルは、タブ区切りで、最初のタブよりも前が求めるファイルのフルパスです。
タブ区切りなので、内容をすべて選択してからExcelにコピペすれば、きちんと列ごとに分かれて貼りつきます。