2016-07-10 1 views
0

현재 파일의 전체 경로를 파일 이름의 접두사로 사용하여 파일 이름의 이름을 바꾸는 스크립트를 작성하고 있습니다. 이는 FileSystemObject에서 GetAbsolutePathName과 잘 작동합니다. Right() 함수를 사용하고 Replace()을 사용하여 백 슬래시를 -으로 대체하여 프롬프트를 삭제했습니다.잘린 폴더 이름을 사용하여 파일 이름 바꾸기

지금까지 모든 것이 잘 작동합니다. 그러나 긴 경로와 여러 하위 폴더로 인해 너무 긴 파일 이름을 피하려면 filename-string의 모든 foldername을 4자를 잘라내는 것이 좋습니다. 나는 가장 우아한 방법이 무엇인지 궁금합니다.

모든 위치를 식별하여 배열에 저장하고자를 위치를 계산하는 루프를 작성하는 것은 약간 복잡하고 아마 느릴 것입니다. 아무도 더 우아한 생각을 가지고 있니?

+3

Welcome to Stackoverflow! 사람들이 일찍 문제를 해결하고 도움을 줄 수 있도록 코드 등의 노력을 기울여 질문을 자세히 작성해 주실 수 있습니까? 감사! – JRSofty

+0

코드 없이도이 질문을 충분히 명확하게 생각합니다. OP는 자신이 성취하고자하는 바를 묘사하고 그가 그것에 대해 생각하는 방식으로 생각한 것보다 더 좋은 방법이 있는지 질문했습니다. –

+0

의견을 보내 주셔서 감사합니다. Ansgar가 말했듯이 나는 다른 아이디어에 대해 궁금했지만 다음에 질문에 대해 더 자세히 설명하려고합니다. – Herbie245

답변

0

당신이 원하는 것을 할 수있는 가장 간단한 방법은 백 슬래시에 Split 원래 경로이며, 4 자에 각 요소를 절단하면 Left 기능 꼭대기, 다시 문자열로 다음 Join 수정 된 배열입니다.

path = "Users\someuser\Documents" 

arr = Split(path, "\") 
For i=0 To UBound(arr) 
    arr(i) = Left(arr(i), 4) 
Next 
prefix = Join(arr, "-") 'result: "User-some-Docu" 

FileSystemObject 경로 구분자 모두 \/을 받아들이는 조심 그래서 BA 것이 좋다 / \ 내지 제를 정규화 할 수있다.

+0

감사합니다, Ansgar, 이것은 아주 우아한 방법입니다. 나는 그것이 많은 양의 파일들과 어떻게 작동하는지 시험 할 것이다. 아마, 나는 폴더 구조에 재귀를 시도 할 것이다. 건배, – Herbie245