Переместить файл в новую папку после того, как он был переименован

Мне нужен VBScript, который переименовывает файл, а затем перемещает его из одной папки в другую. В настоящее время скрипт правильно переименовывает файл, но я не могу понять, как переместить файл в новую папку после переименования.

Ниже приведен сценарий в том виде, в котором он существует.

Option Explicit

Const SAVE_LOCATION = "\\pccit2\Int\PC\Inbox"
Const strPath       = "D:\Files\pak\VP\"
Const StrPrefix     = "VP"

Dim FSO
Dim FLD
Dim fil
Dim strOldName
Dim strNewName

Set FSO = CreateObject("Scripting.FileSystemObject")
Set FLD = FSO.GetFolder(strPath)

For Each fil In FLD.Files
    strOldName = fil.Path
    strNewName = strPath & strPrefix & Right(strOldName, 10)
    FSO.MoveFile strOldName, strNewName
Next

For Each fil In FLD.Files
    If strNewName = 1 Then
        FSO.MoveFile "\\pccit2\Int\PC\Inbox"
    End If
Next

Set FLD = Nothing
Set FSO = Nothing

Я пробовал разные способы заставить файл двигаться. Вот еще несколько попыток:

If FSO.FileExists("D:\Files\pak\VP\*.*") Then
    FSO.MoveFile "D:\Files\pak\VP\*.*", "\\pccit2\Int\PC\Inbox\*.*"
End If

Еще одна попытка

If fil.FileExists("D:\Files\pak\VP\*.*") Then
    fil.MoveFile "D:\Files\pak\VP\*.*" , "\\pccit2\Int\PC\Inbox\*.*"
End If

person jodies    schedule 04.03.2016    source источник


Ответы (2)


MoveFile — это метод FileSystemObject объект. Он ожидает как минимум 2 аргумента (источник и назначение), а подстановочные знаки можно использовать только в исходном пути, не в целевом пути. Местом назначения должен быть путь к файлу или папке (с обратной косой чертой в конце, если это папка). Соответствующий метод файловых объектов: Move, который можно вызвать только с одним аргументом (путь назначения). Кроме того, вы можете переместить и переименовать файл за один шаг. Просто укажите путь назначения с новым именем файла.

For Each fil In FLD.Files
    strNewName = FSO.BuildPath(SAVE_LOCATION, strPrefix & Right(fil.Name, 10))
    fil.Move strNewName
Next

Если вы хотите отделить переименование от перемещения, вы можете переименовать файл, просто изменив его имя:

For Each fil In FLD.Files
    fil.Name = strPrefix & Right(fil.Name, 10)
    fil.Move SAVE_LOCATION & "\"
Next
person Ansgar Wiechers    schedule 05.03.2016
comment
Благодарю вас! Это было чрезвычайно полезно, и я буду ссылаться на ваш ответ в будущем. Первый предоставленный вами скрипт работал отлично. Единственная модификация заключалась в добавлении в ВП префикса. Что я и сделал, добавив его сюда. strNewName = FSO.BuildPath(SAVE_LOCATION, VP & Right(fil.Name, 10)) - person jodies; 07.03.2016

Использовать это

dim fs
set fs=Server.CreateObject("Scripting.FileSystemObject")
fs.MoveFile "c:\myfolder\*.*","c:\anotherfolder\"
set fs=nothing
person statosdotcom    schedule 04.03.2016
comment
Я изменил сценарий, как вы указали, теперь я получаю эту ошибку. Переменная не определена: «Сервер» для этой строки: set fs = Server.CreateObject (Scripting.FileSystemObject) - person jodies; 05.03.2016
comment
Я не думаю, что он вообще использует ASP. Что натолкнуло вас на эту идею? В обычном VBScript вы просто использовали бы Set fs = CreateObject("Scripting.FileSystemObject"). - person Ansgar Wiechers; 05.03.2016