2013-09-30 2 views
1

나는 방대한 수의 파일이있는 폴더를 가지고 있는데, 어떤 폴더를 만들고 그 폴더에 (각각 50 개 미만) 넣어야합니다. 폴더 이름은 어떤 것이 될 수 있습니다. 나는 폴더 이름이 여기 내가 무슨 짓 번호 (1,2,3 .. 등) 것으로 생각하지만,무작위로 임의의 이름을 가진 디렉토리를 만드십시오 - vbs

Set fso=CreateObject("Scripting.FileSystemObject") 
    inputFldr =".\myFolder" 
    Set fldr=fso.getFolder(inputFldr) 
    dim i 
    i=0 
    fName = 0 

for each file in fldr.files 
    i = i+1 
    If Not fso.FolderExists(fName) Then fso.CreateFolder(fName) 
    fso.MoveFile file, fName 

    if i>50 then 
     fName = fName + 1 
     i = 0 
    end if 
next 
wscript.echo done 
+1

하는 경우를 .FolderExists (...)'행은 실제로는 1 행이며, 행 끝에서'End If'를 제거하고 16 진수로 작업하지 않는 경우'&'앞뒤에 공백을 넣으십시오. 그러나이 코드가 모두 코드라면 실제 폴더 경로가 없기 때문에 코드가 작동 할 것입니다. – PatricK

+0

당신이 말한대로 방금했습니다. 그러나 일하지 않습니다. 하지만 난 그냥 내가 위의 코드를 편집 할거야, 내가 당신에게 대단히 감사합니다 몇 가지 잘못된 것들을 발견했습니다 – mhs

답변

3

이 시도 작동하지 않습니다은`하지 않을 경우 FSO

Dim i, fName, inputFldr, TmpFdr 

Set fso = CreateObject("Scripting.FileSystemObject") 
inputFldr = Replace(wscript.scriptfullname,wscript.scriptname,"myFolder") 
Set fldr = fso.getFolder(inputFldr) 
i = 0 
fName = 0 
wscript.echo "Input Folder: " & fldr.path 
For Each file In fldr.Files 
    i = i + 1 
    TmpFdr = inputFldr & "\" & fName & "\" 
    if Not fso.FolderExists(TmpFdr) Then fso.CreateFolder (TmpFdr) 
    file.move TmpFdr 

    If i > 50 Then 
     fName = fName + 1 
     i = 0 
    End If 
Next 
set fldr=nothing 
set fso=nothing 
+0

정말 일을 했어요. 고마워요. 아무도 내 실수를 보여줄 수 있다면 정말 고맙습니다. – mhs

+1

'fso.FolderExists (fName)'은'fName'이 상대적인 폴더를 모릅니다. 따라서 항상 전체 경로를 갖는 것이 가장 좋습니다. [MSDN FileSystemObject] (http://msdn.microsoft.com/en-us/library/6tkce7xa (v = vs.84) .aspx)를 읽으십시오. 답을 btw로 표시하십시오. – PatricK

관련 문제