Войти

Показать полную графическую версию : Как пакетно отделить имена файлов от пути?


ruslaw
10-10-2013, 15:30
Есть список полных путей файлов в текстовом файле (допустим его зовут List.txt)
Типа:
D:\folderA\folderK\folderX\file1.ext1
E:\folderB\folderL\folderY\file2.ext2
F:\folderC\folderM\folderZ\file3.ext3
Имена как папок, так и файлов содержат русские буквы, пробелы, точки, запятые, тире.
Хотелось обработать его скриптом bat(js/vbs) чтобы на выходе получился текстовый файл (.csv) с колонками содержащими
1) исходную колонку; 2) путь без имени файла; 3) имя файла без пути; 4) имя файла без расширения; 5) расширение без имени
D:\folderA\folderK\folderX\file1.ext1 D:\folderA\folderK\folderX\ file1.ext1 file1 ext1
E:\folderB\folderL\folderY\file2.ext2 E:\folderB\folderL\folderY\ file2.ext2 file2 ext2
F:\folderC\folderM\folderZ\file3.ext3 F:\folderC\folderM\folderZ\ file3.ext3 file3 ext3
Возможно ли решение такой задачи?

Iska
10-10-2013, 15:57
csv — это немного другое:
"D:\folderA\folderK\folderX\file1.ext1","D:\folderA\folderK\folderX\","file1.ext1","file1","ext1"

Пробуйте:
Option Explicit

Dim strSourceFile
Dim strDestFile

Dim objFSO
Dim objTS
Dim strLine


strSourceFile = "C:\Песочница\035\List.txt"
strDestFile = "C:\Песочница\035\Out.txt"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(strSourceFile) Then
Set objTS = objFSO.CreateTextFile(strDestFile, True)

With objFSO.OpenTextFile(strSourceFile)
Do Until .AtEndOfStream
strLine = .ReadLine

objTS.WriteLine """" & _
strLine & """,""" & _
objFSO.GetParentFolderName(strLine) & "\"",""" & _
objFSO.GetFileName(strLine) & """,""" & _
objFSO.GetBaseName(strLine) & """,""" & _
objFSO.GetExtensionName(strLine) & """"
Loop

.Close
End With

objTS.Close

Set objTS = Nothing
Else
WScript.Echo "Can't find source file [" & strSourceFile & "]."
End If

Set objFSO = Nothing

WScript.Quit 0

Путь Вам обязательно с завершающим слэшем?

ruslaw
10-10-2013, 21:59
Завершающий слэш полезен для единообразия записи.
Спасибо за код, он мне отлично подошел.




© OSzone.net 2001-2012