1. ホーム
  2. スクリプト・コラム
  3. vbs

DNSを変更し、IEの一時ファイルを空にするvbsスクリプト

2022-02-08 07:54:35

今朝、Mountain Green Instituteから電話があり、DNSをキャンパスDNSに変更し、IEの一時ファイルを空にするスクリプトが必要だと言われました。

コピーコード コードは以下の通りです。

rem programed by Kaisir
@echo off
echo The purpose of this script is to change your DNS to 222.194.76.2 for Shandong Youth Politics College and to clear the temporary files in your computer. If you have any questions, please call the Network Center.
pause
echo Modify DNS in...
netsh interface ip set dns "local connection" source=static addr=222.194.76.2
echo DNS has been modified successfully, next we will start emptying the ie temporary files...
pause
echo Clear the temporary file in...
del /f /s /q "%userprofile%Local SettingsTemporary Internet Files*. *"
del /f /s /q "%userprofile%AppDataLocalMicrosoftWindowsTemporary Internet Files*. *"
echo All operations have been successfully completed! Thank you for your use.
pause

ほら、考え方は簡単で、netshでdnsを変更するだけです。Win7とXpのテンポラリディレクトリの違いに適応するため、delete文が2回書かれていますね。

しかし、よく考えてみると、このスクリプトにはいろいろと問題がある。

1) ユーザーが複数のNICを持っている場合、このスクリプトはローカルに接続されているものだけを変更します。

2) ユーザーが一時ファイルの場所を手動で変更した場合、このスクリプトは役に立ちません。

そこで、次のようなvbs版のスクリプトがあります。

コピーコード コードは以下の通りです。

'Delete all files and folders in the directory
 Const DeleteReadOnly = True
 Set objFSO = CreateObject("Scripting.FileSystemObject")
  objFSO.DeleteFile(net_temp&"*. *"), DeleteReadOnly
 strComputer = ". "
 Set objWMIService = GetObject("winmgmts:" & strComputer & "rootcimv2")
 Set colSubfolders2 = objWMIService.ExecQuery _
        ("Associators of {Win32_Directory.Name='" & net_temp & "'} " _
            & "Where AssocClass = Win32_Subdirectory " _
                & "ResultRole = PartComponent")

    For Each objFolder2 in colSubfolders2
        objFSO.deleteFolder objFolder2.name , DeleteReadOnly
    Next
 MsgBox("All operations have been successfully executed! ")
else
end if

こちらはもう少しスマートで、winmgmtsを通してシステム上のNICのリストを取得し、有効なNICを繰り返し、それらを変更します。一時ファイルの部分については、レジストリキー "HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerShell Folderscache" も読み込んで、フォルダの場所を取得する。その後、作成されたfsoオブジェクトの対応するメソッドでkillされる〜。