Есть ли способ перемещать строки в именах файлов? (VisualBasi c) - PullRequest
0 голосов
/ 24 февраля 2020

Так что мой контекст таков, что у меня есть несколько папок ПОЛНЫХ файлов, отсортированных по алфавиту. Теперь в мире Engli sh есть маленькая надоедливая статья под названием «the», которая не очень важна и отбрасывает вашу автосортировку. Теперь я хочу переместить «» в конец имени файла, но перед одним из моих суффиксов (например, -01, -02), потому что несколько файлов имеют одно и то же имя, но разные версии. Примерно так:

"Пример Exemplar Example-01.ex" -> "Пример Exemplar, The-01.ex"

Поэтому я обратился к VisualBasi c Script (VBS ) и приблизился к тому, что я хотел, выполнив поиск в Google, но не смог получить именно то, что хотел. Вот мой сценарий:

private directfold
directfold=InputBox("Please specify a directory path:")
MsgBox("The folder to be 'de-annnoyed' is: " & directfold)

public annoyance
annoyance = "the"

Set fso = CreateObject("Scripting.FileSystemObject")  
Set folder = fso.GetFolder(directfold)

For each file In folder.Files    

If instr(file.name, searchFileName) = 1 Then
    file.name = renameFileTo

Таким образом, в нижней части сценария вы можете найти команду "renameFileTo" без аргументов, потому что я не хочу переименовывать весь файл, я хочу "перемещаться" часть имени файла, если эта часть имени файла соответствует строке «раздражение» («the»). Так может ли кто-нибудь после моей долгой прогулки мне помочь?

1 Ответ

0 голосов
/ 24 февраля 2020

Возможно, вы захотите, чтобы слово раздражения включало завершающий пробел, чтобы такие имена, как «Они» или «Тема» и т. Д. c, не вызывали его.

Если разделитель в конце всегда равен - и является единственным экземпляром символа в строке, вы можете использовать Replace для замены строки. Примерно так

annoyance = "The "
f = "The Exemplar Example-01.ex"
newName = Replace(Replace(f,"-",", " + Trim(annoyance) + "-"),annoyance,"")

newName будет равно Exemplar Example, The-01.ex

Внутренний Replace заменит символ - в зависимости от того, как вы его отформатируете, а внешний заменит слово раздражения ни с чем. Trim удалит завершающий пробел.

edit: Если вы хотите заменить только одно вхождение строки, используйте следующее:

newName = Replace(Replace(f,"-",", " + Trim(annoyance) + "-"),annoyance,"",1,1)

См. здесь для дополнительной информации о функции Replace.

...