スタートメニューからすべてを削除し、ゼロから再び追加するVBSスクリプトがあります。これをドメインのログオンスクリプトとして使用します。しかし、先週、一部の人々が異なるアプリケーションを使用しており、それらのアプリケーションが中央の共有上にないことに気づいたので、私の質問は、このスクリプトから特定のフォルダーを削除から除外することです
Dim objShell, strCmd, intRunError, strFolder, objFileSys
Set objShell = CreateObject( "WScript.Shell" )
appDataLocation=objShell.ExpandEnvironmentStrings("%APPDATA%")
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(appDataLocation & "\Microsoft\Windows\Start Menu\Programs")
' delete all subfolders and files
For Each f In folder.SubFolders
On Error Resume Next
name = f.name
f.Delete True
Next
' delete all files in root folder
for each f in folder.Files
On Error Resume Next
name = f.name
f.Delete True
Next
Set objFileSys = CreateObject("Scripting.FileSystemObject")
objFileSys.GetFolder("\\test\dfstest\Start Menu\programs").Copy appDataLocation & "\Microsoft\Windows\Start Menu\Programs"
Set objFileSys = Nothing
編集:タイプの不一致?
Dim objShell, strCmd, intRunError, strFolder, objFileSys
Dim Exceptions()
Dim Exception
Dim i
Set objShell = CreateObject( "WScript.Shell" )
appDataLocation=objShell.ExpandEnvironmentStrings("%APPDATA%")
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(appDataLocation & "\Microsoft\Windows\Start Menu\Programs")
Exception(0) = appDataLocation & "\Microsoft\Windows\Start Menu\Programs\Access 2013"
Exception(1) = appDataLocation & "\Microsoft\Windows\Start Menu\Programs\Cameleon"
For Each sf in MyFolder.SubFolders
Exception = False
For i = LBound(Exceptions) to UBound(Exceptions)
If lCase(sf.Path) = lCase(Exceptions(i)) Then
Exception = True
Exit For
End If
Next
If Not Exception Then
deleteSubFolders
sf.Delete
End If
Next
Public Sub deleteSubFolders(byRef MyFolder, exclFolder)
Dim sf
For Each sf in MyFolder.SubFolders
If not (lCase(sf.Path) = lCase(exclFolder)) Then
deleteSubFolders sf, exclFolder
sf.Delete
End If
Next
End Sub
' delete all files in root folder
for each f in folder.Files
On Error Resume Next
name = f.name
f.Delete True
Next
Set objFileSys = CreateObject("Scripting.FileSystemObject")
objFileSys.GetFolder("\\test\dfstest\Start Menu\programs").Copy appDataLocation & "\Microsoft\Windows\Start Menu\Programs"
Set objFileSys = Nothing
2
確かにそれは可能です。しかし、このスクリプトを作成した場合は、その方法も知っておく必要があります。これは無料のスクリプトサービスではないことに注意してください。
—
マテジュハス
フォルダの名前を配列に追加します。次に、削除する前に、配列内の文字列がSubFoldersに含まれている場合は削除しないで、それぞれを繰り返します!:)
—
デイブ
同僚が設定した組織を殺すことは、確かに彼らをあなたのようなものにします。そもそもなぜこれをしているのですか?それは良いアプローチだと確信していますか?すべてのセットアップで独自のショートカットを管理すべきではありませんか?
—
セス
@MátéJuhászよくこれは私が今まで試したことです。ただし、除外を追加するだけで、この方法では1つのフォルダーしか除外できないと思います。変数は複数の文字列を持つことができるとは思わないからです。しかし、私はそれほど優れたコーダーではありません。
—
ディランRz
あなたは宣言した
—
メイトユハス
excludeFolder
が、使用exclFolder
:(。