Category: Scripting

Windows automation / keyboard and mouse macros, in Python
article #823, updated 2296 days ago

Two very interesting and related developments:



WordPerfect Files
article #737, updated 2555 days ago

It’s not very much documented, but if you have a lot of WordPerfect files, try renaming their extensions to .DOC. Word will load them, unless they are very old files from WordPerfect for DOS.

If you have a huge tree of WPD files, use a batch file like this:

For /R "X:\TOP_OF_TREE" %%G in (.) Do (
 Pushd %%G
 Echo now in %%G
 ren *.wpd *.doc
 Popd )
Echo "Done!"



An excellent resource on CMD, VBscript, PowerShell, Bash, Oracle, OS X, SQL Server, Access...
article #628, updated 2808 days ago

Try this:



Detect Computer Group Membership
article #544, updated 3052 days ago

Try this:

Dim objNetwork
Set objNetwork = CreateObject("WScript.Network")

Dim objWinntComp
Set objWinntComp = GetObject("WinNT://" & objNetwork.UserDomain & "/" & objNetwork.ComputerName & ",computer")
MsgBox "WinNT://" & objNetwork.UserDomain & "/" & objNetwork.ComputerName & ",computer"

Dim strGroupToCheck
strGroupToCheck = "GROUP_TO_DETECT"

If IsMemberOfGroup(objNetwork.UserDomain, objWinntComp, strGroupToCheck) = True Then
      MsgBox "You are a member of " & strGroupToCheck
ElseIf IsMemberOfGroup(objNetwork.UserDomain, objWinntComp, strGroupToCheck) = False Then
      MsgBox "You are NOT a member of " & strGroupToCheck
ElseIf IsMemberOfGroup(objNetwork.UserDomain, objWinntComp, strGroupToCheck) = "Error" Then
      MsgBox "There was no group found called " & strGroupToCheck
End If      

Function IsMemberOfGroup(strUserDomain, objComp, strGroup) 'the user is a member of a specified group
      IsMemberOfGroup = False
      Dim objGroup
      On Error Resume Next
      Set objGroup = GetObject("WinNT://" & strUserDomain & "/" & strGroup & ",group")
      If Err.Number Then
            IsMemberOfGroup = "Error"
            IsMemberOfGroup = objGroup.IsMember(objComp.ADsPath & "$")
      End If
End Function



Iterate a folder in CMD
article #519, updated 3107 days ago

Try this:

@echo off
for /D %%Q in (C:\*) do echo Directory:  %%Q
for %%Q in (C:\*) do echo File:  %%Q

The above is a solid batch file — if you use the logic in the command shell, use single percents, not doubles!



Choose one or more files in Access (or other VBA) 2010
article #412, updated 3479 days ago

The below is revised from here. It works well, as long as a reference to the Microsoft Office [currentversion] Type Library is created. This is confirmed to work well in Access 2010.

Public Function ChooseFile() As String

    With Application.FileDialog(msoFileDialogFilePicker) 
        .AllowMultiSelect = False 'Select only one file
        .Title = "Choose file" 'Set dialog title
        .ButtonName = "Choose" 'Set the button caption
        '.Filters.Clear 'Make sure the filter list is clear
        'Add 2 filters
            '.Filters.Add "JPEGs", "*.jpg"
            '.Filters.Add "Bitmaps", "*.bmp"
            '.FilterIndex = 2 ' Set the filter index to 2
            '.Filters.Add "All", "*.*"

        'Set initial path
        .InitialFileName = "" 

        'Optionally show files as thumbnails
        '.InitialView = msoFileDialogViewThumbnail
        .InitialView = msoFileDialogViewList

        'Show the dialog and test the return
        If .Show = 0 Then
            'didn't pick a file - exit sub
            ChooseFile = ""
            Exit Function
        End If

        'Should be only one file name - grab it
        ChooseFile = Trim(.SelectedItems(1))  

        'On Error Resume Next 'Set error trap

    End With

End Function



Send email via Gmail SMTP by VBscript (incl. SMTP auth!)
article #341, updated 3681 days ago

Here is a VBscript which, if edited for your Gmail account and environment, will work well on anything XP, Server 2003, or above. It does not require any additional installations, CDO is an object built in to Windows:

EmailSubject = "Sending Email by CDO"
EmailBody = "This is the body of a message sent via" & vbCRLF & _
		"a CDO.Message object using SMTP authentication."

Const EmailFrom = ""
Const EmailFromName = "My Very Own Name"
Const EmailTo = ""
Const SMTPServer = ""
Const SMTPLogon = ""
Const SMTPPassword = "gMaIlPaSsWoRd"
Const SMTPSSL = True
Const SMTPPort = 465

Const cdoSendUsingPickup = 1 	'Send message using local SMTP service pickup directory.
Const cdoSendUsingPort = 2 	'Send the message using SMTP over TCP/IP networking.

Const cdoAnonymous = 0 	' No authentication
Const cdoBasic = 1 	' BASIC clear text authentication
Const cdoNTLM = 2 	' NTLM, Microsoft proprietary authentication

' First, create the message

Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = EmailSubject
objMessage.From = """" & EmailFromName & """ <" & EmailFrom & ">"
objMessage.To = EmailTo
objMessage.TextBody = EmailBody

' Second, configure the server

objMessage.Configuration.Fields.Item _
("") = 2

objMessage.Configuration.Fields.Item _
("") = SMTPServer

objMessage.Configuration.Fields.Item _
("") = cdoBasic

objMessage.Configuration.Fields.Item _
("") = SMTPLogon

objMessage.Configuration.Fields.Item _
("") = SMTPPassword

objMessage.Configuration.Fields.Item _
("") = SMTPPort

objMessage.Configuration.Fields.Item _
("") = SMTPSSL

objMessage.Configuration.Fields.Item _
("") = 60


' Now send the message!




Detect Windows versions in batch files
article #301, updated 3778 days ago

Here is some excellent code:



A simple backup system with disk2vhd
article #265, updated 3870 days ago

This works, to back up C drive to \\DEST_SERVER\E$\SHARE, if disk2vhd.exe is within the path:

REM A simple backup system using disk2vhd
REM version 1.3, by J.E.B., 2011-02-22
REM requires 'disk2vhd.exe' to be in the path

setLocal EnableDelayedExpansion

REM "DRIVES" can be one drive identifier with colon, multiple separated by spaces,
REM or asterisk for all.  
REM "DEST" can be a drive letter or a UNC.


REM Keep most recent 4 VHD files in DEST, delete the rest

for /f "skip=4 tokens=* delims= " %%a in ('dir/b/o-d %DEST%\*.VHD') do (
del %DEST%\%%a

REM Backup to VHD

cd \
DISK2VHD %DRIVES% %DEST%\D2VBK--%date:~-10,2%%date:~-7,2%%date:~-4,4%_TS.VHD



Delete Windows share by script
article #172, updated 4098 days ago

Put the below in a VBS file and run it (from a batch file perhaps) with ‘wscript filename.vbs’.

' The name of the share.
strShareName = "SHARE"

' SERVERNAME has to be the hostname of the machine containing the sahre
Set objfServer = GetObject("WinNT://SERVERNAME/lanmanserver")
objfServer.Delete "Fileshare", strShareName
Set objfServer= Nothing