переименовывать файлы, используя значения массива vbscript - PullRequest
0 голосов
/ 15 февраля 2012

Мне нужно переименовать файлы в папке на основе значений, которые я создал в массиве. Я сталкиваюсь с проблемами, потому что я не уверен, как объявить ту часть файла, которую нужно переименовать.

Файлы выглядят так: Xnnnnnnnnnnnnnn_stmt-n.pdf, где n = любое число от 0 до 9. То, что я пытаюсь сделать, это посмотреть на часть значения n, которая идет после stmt, и переименовать ее в набор значений массива, который я уже объявил. Значение n может быть где угодно от 1 до 400. Я хочу, чтобы скрипт сказал, что если n = значение массива, то переименуйте эту часть файла в значение массива.

Вот несколько примеров значений массива, которые я создал. 1 = "aa" 2 = "ab" 3 = "ac" ... 50 = "bx" .. 150 = "fv" .... вплоть до 400 = "ql".

Вот код, который я до сих пор не выполняю:

Const INPATH = "\folder"
Const OUTPATH = "\folder"

' check that the directories exist. 
dim fso: set fso = CreateObject("Scripting.FileSystemObject")
if not fso.FolderExists(INPATH) then
err.raise 1,, "Path '" & INPATH & "' not found"
end if
if not fso.FolderExists(OUTPATH) then
err.raise 1,, "Path '" & OUTPATH & "' not found"
end if

dim Array(400)
Array(0)=" "
Array(1)="aa"
Array(2)="ab" ' this would continue until 400
Array(400)="ql"

dim infolder: set infolder = fso.GetFolder(INPATH)
dim file
for each file in infolder.files

dim name: name = file.name
dim parts: parts = split(name, ".")
dim nanname: nanname = left(parts(0), 21)
dim value: value = right(parts(0), 1)  
dim newname
dim newvalue 
    if value = 1 then newvalue = Array(1)
    if value = 2 then newvalue = Array(2)
    if value = 400 then newvalue = Array(400) 
        newname = nanname & newvalue & "." & parts(2) 'parts 2=pdf
        file.move fso.buildpath(OUTPATH & newname)
    endif 

next 

Одна из основных проблем, с которыми я сталкиваюсь, - это попытка найти способ объявить 'значение', потому что часть значения имени файла может быть любым числом 1-400. Любые идеи или помощь будут оценены.

1 Ответ

0 голосов
/ 16 февраля 2012

Первая проблема заключается в том, что «Array» - это функция VBScript, и вы не можете использовать ее в качестве имени переменной.Вот обновленный скрипт.Я не проверял это, но вы должны быть в состоянии понять идею.

dim fso: set fso = CreateObject("Scripting.FileSystemObject")
if not fso.FolderExists(INPATH) then
  err.raise 1,, "Path '" & INPATH & "' not found"
end if
if not fso.FolderExists(OUTPATH) then
  err.raise 1,, "Path '" & OUTPATH & "' not found"
end if    

dim LetterArray(400)

dim vChrLoop1 = 0 'First letter loop
dim vChrLoop2 = 0 'Second letter loop
dim vArrayPointer = 0 'Total counter pointer

Do Until vArrayPointer = 400 'loop through every value
  Do Until vChrLoop2 = 25 ' loop until the letter "z"
     LetterArray(vArrayPointer) = Chr(97+vChrLoop1) & Chr(97+vChrLoop2)

     vChrLoop2 = vChrLoop2 + 1 'move to the next letter for the second letter
     vArrayPointer = vArrayPointer + 1 'increment the pointer
  Loop

  vChrLoop1 = vChrLoop1 + 1 'move to the next letter for first letter
  vChrLoop2 = 0 'Reset the second letter loop to "a"
Loop

dim infolder: set infolder = fso.GetFolder(INPATH)
dim file

for each file in infolder.files

  dim name: name = file.name
  dim parts: parts = split(name, ".")
  dim nanname: nanname = left(parts(0), 21)

  dim aValue(1)
  aValue = Split(parts(0),"-")
  dim value: value = aValue(1)
  dim newname

  newname = nanname & LetterArray(value) & "." & parts(2) 'parts 2=pdf
    file.move fso.buildpath(OUTPATH & newname)
next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...