● UWSCにて、管理画面から作成した「現在アクセスされている共有ファイルやフォルダのフルパスのリスト」を使って、「それらを除外してXcopyする」ための「除外リスト」の自動作成の方法
Windows2000での方法ですが、管理画面から作成した「現在アクセスされている共有ファイルやフォルダのフルパスのリスト」Windows10でも使えます。
が、Windows10の場合は、管理画面ではなく、openfiles コマンドでやったほうが早いかもしれません。
ただ、openfiles コマンドで出力した「開かれた共有ファイルのフルパスリスト」から、除外リストを作成することもできると思います。
なお、Windows2000には、openfiles コマンド自体がありませんので、管理画面から、「開かれた共有ファイルのフルパスリスト」を作成する必要があると思います。
※openfiles コマンドでも、管理画面からでも、「現在開かれている共有ファイルのフルパスリスト」ではtxtやjpgやbmpなどの、「最初からWindowsで開けるファイル」はフルパスが取得できないみたいです。VBSやPowerShellなどでならできるのかもしれません。それに対して、xlsやxlsx、pdf、といった、あとから追加するソフトに依存する拡張子の場合は、フルパスが取得できます。
Openfileコマンドか、管理画面から、事前に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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
// // Dim RowNum //ファイル内の行数を格納する変数をメモリ上に作成 Dim OneRowdata01 //1行分の内容を格納するための変数をメモリ上に作成 Dim fid //読み込むファイルのフィルのidを格納する変数をメモリ上に作成 Dim fid02 //書き出すファイルのフィルのidを格納する変数をメモリ上に作成 Dim TabPosi //最初のTabの位置を格納するための変数ををメモリ上に作成 //読み込みたいファイルを開く(あらかじめ「D:\ShareOpenFileFullPath.txt」を作成しておきます。) file = "D:\ShareOpenFileFullPath.txt" fid = FOPEN(file,F_READ or F_WRITE) //読み込みたいファイルの行数を取得 RowNum = FGET(fid,F_LINECOUNT) //MSGBOX("全部で" + RowNum + "行あります。") Dim RowStr01[RowNum] //読み込んだファイルの全行の内容を格納するための配列の変数をメモリ上に作成 //配列「RowStr01」に、1行分ずつ、その内容を代入(TABなども含む) for i = 2 to RowNum //1行目は列名なので、読み込むのは2行目からとした OneRowdata01 = FGET(fid,i) //1行分のデータを読み込む TabPosi = POS("<#TAB>",OneRowdata01) //最初のTABの位置を取得 //MSGBOX(OneRowdata01 + "---" +TabPosi) RowStr01[i] = COPY(OneRowdata01, 1, TabPosi-1) //1行の先頭から、最初のTABまでの内容を配列に格納 //MSGBOX(FGET(fid,i)) next //読み込んだファイルを閉じる FCLOSE(fid) //=============================== //書き込みたいファイルを開く fid02 = FOPEN("D:\ExclusionList.txt", F_WRITE) //※注:「F_WRITE」は、ファイルが存在しなければ自動生成し、 // 逆に存在すれば、ファイルの内容を上書きしてくれるそうです。 //読み込んだ全行の内容を配列変数の「RowStr01」から1行分ずつ書き込み for i = 1 to RowNum FPUT(fid02, RowStr01[i]) next //書き込んだファイルを閉じる FCLOSE(fid02) MSGBOX("完了しました!") // // |