Search code examples
vbscriptfilenamesspace

Replace a text file which may or may not contain a space in file name


I want to replace a file named with different name using VBScript. The input file name may or may not contain blank spaces.

Set objFSO = CreateObject("Scripting.FileSystemObject")
' First parameter: original location\file
' Second parameter: new location\file
objFSO.CopyFile "D:\Development\abc  def.txt", "D:\Development\xyz.txt"

Solution

  • Perhaps surprisingly, CopyFile creates a copy of the source file. To rename a file you could use MoveFile, but the usual approach is to simply change the name of the file:

    Set fso = CreateObject("Scripting.FileSystemobject")
    fso.GetFile("D:\Development\abc  def.txt").Name = "xyz.txt"
    

    Edit: If you actually mean to replace one file with another file, you can do so with CopyFile by setting the third parameter (overwrite) to True, as @Lankymart pointed out in the comments.

    fso.CopyFile "D:\Development\abc  def.txt", "D:\Development\xyz.txt", True
    

    If you don't want to keep the source file you need to delete it after the copy operation (VBScript doesn't allow moving a file over an existing file). Alternatively you can delete the destination file first and then move or rename the source file.