That did it, thanks Kiffi
OK, just some small utility functions for WMI using COMate. Pretty much explainatory, and open to improvement if you wish:
Code: Select all
Procedure WMICreate_Text_File(in_file_name_path.s)
; example: WMICreate_Text_File("C:\test.txt")
Define.COMateObject objFSO
creatfile$ = in_file_name_path
objFSO = COMate_CreateObject("Scripting.FileSystemObject")
If objFSO
objFSO\Invoke("CreateTextFile('" + creatfile$ + "')")
EndIf
objFSO\Release()
EndProcedure
Procedure WMICopy_File(in_file_name_path.s, out_file_name_path.s, overwrit.i) ; in_file_name_path in format C:\tempdir\testfile.txt - out_file_name_path in format C:\tempdir\
; example: WMICopy_File("C:\test.txt", "C:\temp\", #True)
Define.COMateObject objFSO
OverwriteExisting$ = Str(overwrit)
filetocopy$ = in_file_name_path
filetodest$ = out_file_name_path
objFSO = COMate_CreateObject("Scripting.FileSystemObject")
If objFSO
objFSO\Invoke("CopyFile('" + filetocopy$ + "', '" + filetodest$ + "', '" + OverwriteExisting$ + "')")
EndIf
objFSO\Release()
EndProcedure
Procedure WMICopy_Set_of_Files(in_file_path_mask.s, out_file_path.s, overwrit.i) ; overwrit is #True or #False to overwrite exiting or not
; example: WMICopy_Set_of_Files("C:\*.txt", "C:\temp\", #True) or WMICopy_Set_of_Files("C:\*.txt", "C:\temp\", #False)
Define.COMateObject objFSO
OverwriteExisting$ = Str(overwrit)
filetocopymask$ = in_file_path_mask
filetodest$ = out_file_path
objFSO = COMate_CreateObject("Scripting.FileSystemObject")
If objFSO
objFSO\Invoke("CopyFile('" + filetocopymask$ + "', '" + filetodest$ + "', '" + OverwriteExisting$ + "')")
EndIf
objFSO\Release()
EndProcedure
Procedure WMIMove_File(in_file_name_path.s, out_file_name_dest.s) ; in_file_name_path can contain wildcard characters (i.e.. *.txt) in the last path component only
; out_file_name_dest cannot contain wildcard characters
; example: WMIMove_File("C:\test.txt", "C:\temp\")
; If destination does Not exist, the file gets moved.
; If destination is an existing file, an error occurs.
; If destination is a directory with same name as file, an error occurs.
Define.COMateObject objFSO
filetomove$ = in_file_name_path
movefiletodest$ = out_file_name_dest
objFSO = COMate_CreateObject("Scripting.FileSystemObject")
If objFSO
objFSO\Invoke("MoveFile('" + filetomove$ + "', '" + movefiletodest$ + "')")
EndIf
objFSO\Release()
EndProcedure
Procedure.s WMIDelete_All_File(in_file_mask_path_delete.s, force.i) ; force = true if files with the read-only attribute set are to be deleted also; false (default) if they are not.
; example: WMIDelete_All_File("C:\temp\*.txt", #True)
; An error occurs if no matching files are found. The DeleteFile method stops on the first error it encounters. No attempt is made to roll back or undo any changes that were made before an error occurred.
Define.COMateObject objFSO
DeleteReadOnly$ = Str(force)
file_mask_to_delete$ = in_file_mask_path_delete
objFSO = COMate_CreateObject("Scripting.FileSystemObject")
If objFSO
sucess_error = objFSO\Invoke("DeleteFile('" + file_mask_to_delete$ + "', '" + DeleteReadOnly$ + "')")
EndIf
If sucess_error <> 0
return_error$ = "No matching files found to delete"
EndIf
objFSO\Release()
ProcedureReturn return_error$
EndProcedure
Procedure WMIDelete_Single_File(in_file_to_delete.s)
; example: WMIDelete_A_File("C:\temp\test.txt", #True)
Define.COMateObject objFSO
fileto_delete$ = in_file_to_delete
objFSO = COMate_CreateObject("Scripting.FileSystemObject")
If objFSO
sucess_error = objFSO\Invoke("DeleteFile('" + fileto_delete$ + "')")
EndIf
objFSO\Release()
EndProcedure
Procedure WMIDelete_A_Folder(in_folder_to_delete.s, force.i) ; force.i is #True if folders with the read-only attribute set are to be deleted also; #False if they are not.
; example: WMIDelete_A_Folder("C:\temp", #True)
;The specified folder is deleted regardless of whether or not it has contents (all contents are deleted too).
Define.COMateObject objFSO
ReadOnly$ = Str(force)
folder_to_delete$ = in_folder_to_delete
objFSO = COMate_CreateObject("Scripting.FileSystemObject")
If objFSO
sucess_error = objFSO\Invoke("DeleteFolder('" + folder_to_delete$ + "', '" + ReadOnly$ + "')")
EndIf
objFSO\Release()
EndProcedure
Procedure WMICreate_A_Folder(in_folder_to_create.s)
; example: WMICreate_A_Folder("C:\temp") or WMICreate_A_Folder("C:\temp\testfolder1") for a sub dir
; for sub folders, folder has to exist first before sub folders are created i.e... C:\temp\testfolder1 has to exist before C:\temp\testfolder1\testfolder2 is created.
Define.COMateObject objFSO
folder_to_create$ = in_folder_to_create
objFSO = COMate_CreateObject("Scripting.FileSystemObject")
If objFSO
objFSO\Invoke("CreateFolder('" + folder_to_create$ + "')")
EndIf
objFSO\Release()
EndProcedure
Procedure WMIRename_File(in_old_name.s, out_new_name.s)
; example: WMIRename_File("C:\test.txt", "C:\test_renamed.txt") or WMIRename_File("C:\test.txt", "C:\test.old") etc...
Define.COMateObject objWMIService, RNFInfo
colRNFInfo.COMateEnumObject
strComputer.s = "."
In_old_name_rename$ = ReplaceString(in_old_name, "\", "\\")
Out_new_name_rename$ = out_new_name
objWMIService = COMate_GetObject("winmgmts:\\" + strComputer + "\root\cimv2", "")
If objWMIService
colRNFInfo = objWMIService\CreateEnumeration("ExecQuery('Select * from CIM_DataFile Where Name= $0027" + In_old_name_rename$ +"$0027')")
If colRNFInfo
RNFInfo = colRNFInfo\GetNextObject()
While RNFInfo
RNFInfo\Invoke("Rename('" + Out_new_name_rename$ + "')")
RNFInfo\Release()
RNFInfo = colRNFInfo\GetNextObject()
Wend
colRNFInfo\Release()
EndIf
objWMIService\Release()
Else
MessageRequester("Error", "RNFInfo")
EndIf
EndProcedure
Procedure WMIWrite_to_File(file_to_write.s, string_to_write.s)
Define.COMateObject objFSO, MyFile
ForReading$ = Str(1)
ForWriting$ = Str(2)
ForAppending$ = Str(8)
stringtowrite$ = string_to_write
filetowrite$ = file_to_write
objFSO = COMate_CreateObject("Scripting.FileSystemObject")
If objFSO
MyFile = objFSO\GetObjectProperty("OpenTextFile('" + filetowrite$ + "', '" + ForAppending$ + "')")
MyFile\Invoke("WriteLine('" + stringtowrite$ + "')")
MyFile\Invoke("Close()")
EndIf
objFSO\Release()
EndProcedure
Procedure.i If_File_Exists(file_to_check.s) ; where file_to_check.s = full path to the file i.e.. C:\temp\testfile.txt
; returns -1 if the file exists and 0 if it doesn't exist
Define.COMateObject objFSO, MyFile
objFSO = COMate_CreateObject("Scripting.FileSystemObject")
If objFSO
exists.i = objFSO\GetIntegerProperty("FileExists('" + file_to_check + "')")
EndIf
objFSO\Release()
ProcedureReturn exists
EndProcedure
If If_File_Exists("C:\wrtfile.txt") = 0
WMICreate_Text_File("C:\wrtfile.txt")
Delay(1)
EndIf
WMIWrite_to_File("C:\wrtfile.txt", "[Test_Info]")
Delay(1)
WMIWrite_to_File("C:\wrtfile.txt", "This is a test")
Delay(1)
WMIWrite_to_File("C:\wrtfile.txt", "And This is another test")