VBS переименовать файл через меню «Отправить в» - PullRequest
0 голосов
/ 21 ноября 2018

Каждый день мне приходится переименовывать файлы, чтобы заменить пробелы тире, прежде чем я смогу отправлять их на наши машины (некоторые из наших машин не читают пробелы в именах файлов, но в наших соглашениях об именах файлов есть пробелы, конфликт интересов, который язнаю).

Иногда это один файл, другие - полдюжины, поэтому я использую меню Windows Send To для отправки выбранных файлов в сценарий.

Я дошел до переименования строк, но фактическая функция перемещения говорит, что путь не найден, когда я попадаю в функцию fso.movefile.

Вот что у меня есть.

Set objArgs = WScript.Arguments
Dim Fso
Set Fso = WScript.CreateObject("Scripting.FileSystemObject")

'Cycle through files
    For I = 0 to objArgs.Count - 1
' Assign array entry to variable
    t = objArgs(I)
' Parse variable to replace spaces with dashes
    s = Replace(t, " ", "-")
' Let me know how I did
    WScript.Echo t & vbcrlf & s
'Move 'em
    fso.movefile t, s
Next

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 22 ноября 2018

Так что моей проблемой была папка, в которой я находился, тоже были пробелы.Поэтому мой код пытался переименовать в папку, которая не существует.

Как только я разобрал имя файла по пути и перегруппировал измененное имя файла, оно работало отлично.Код ниже.

Dim t ' original file and path
Dim s ' file name only with spaces
Dim u ' new file name without spaces
Dim v ' path only
Dim obj
Set objArgs = WScript.Arguments
set obj = WScript.CreateObject("Scripting.FileSystemObject")

'Cycle through files
    For I = 0 to objArgs.Count - 1
        ' Assign array entry to variable
            t = objArgs(I)
        ' Parse file name from path
            s = Right(t, Len(t) - InStrRev(t, "\"))
        ' Remove file name from path
            v = left(t, InStrRev(t, "\"))
        ' Parse variable to replace spaces with dashes
            u = Replace(s, " ", "-")
'       ' Let me know how I did
'           WScript.Echo "Was(t):    " & t & vbcrlf & "Is(s):     " & s & vbcrlf & "Path:  " & v
        'Move 'em
        obj.movefile t, v & u
    Next
...