VBScript example: make folders from names of selected items
Posted: 08 Mar 2010, 19:35
				
				Here is a little VBScript I wrote to create new folders in the "opposite" panel based on a selection.  It demonstrates iterating through a selection and performing an action on each member.
The error handling could be enhanced a bit, but I have had no trouble with it.
			Code: Select all
'--------------------------------------------------------------------------------------
'---	Make Folder (VBScript).vbs
'---	Creates folder(s) in the opposite panel with the name(s) of the selected item(s)
'--------------------------------------------------------------------------------------
Dim UseFocusedItem
	 UseFocusedItem = False
'--- Identify the item(s) to use for the foldername(s)
If Salamander.SourcePanel.SelectedItems.Count = 0 Then
	If Salamander.SourcePanel.FocusedItem.Name <> ".." then
		UseFocusedItem = True
	Else
		Salamander.MsgBox "Please select or focus an item first.",0,"Nothing to do!"
		Salamander.AbortScript()
	End If
Else
	Dim Items
	Set Items = Salamander.SourcePanel.SelectedItems
End If
On error resume next
Dim FSO
Set FSO = Createobject("scripting.filesystemobject")
'-- Create new folders in opposite panel
Dim NewFolderRootFolderName
	NewFolderRootFolderName = Salamander.TargetPanel.Path
Dim NewFolder
Dim NewFolderName
Dim ItemsCount
Dim ErrorMessage
If UseFocusedItem = True then
	'--- No selection found, so use focused item only
	NewFolderName = NewFolderRootFolderName & "\" & Salamander.SourcePanel.FocusedItem.Name
	Set NewFolder = FSO.CreateFolder(NewFolderName)
Else
	'--- Use selection
	Dim Item
	If VarType(Items) <> 0 Then
		'--- Set up progress dialog
		Salamander.ProgressDialog.Style = 1
		Salamander.ProgressDialog.Maximum = Items.Count
		Salamander.ProgressDialog.Show
		Salamander.ProgressDialog.AddText "Making folders in: " & NewFolderRootFolderName & vbcrlf & vbcrlf
		'--- Iterate through the selected items and make a corresponding folder in the opposite panel
		For Each Item In Items
			If Item.Name <> ".." Then
				Salamander.ProgressDialog.Step(1)
				'--- Construct name
				NewFolderName = NewFolderRootFolderName & "\" & Item.Name
				'--- Make the folder with the name of the item
				Set NewFolder = FSO.CreateFolder(NewFolderName)
				If Err <> 0 then ErrorMessage = Err.Description else ErrorMessage ="OK"
				Salamander.ProgressDialog.AddText Item.Name & " - " & ErrorMessage
				Err = 0
			End If
		Next
		'--- Allow user to review ProgressDialog.  Comment out for faster behavior.
		Salamander.Sleep(3000)
	End If
End If