파일 이름을 일괄 변경하고 하위 폴더로 이동합니다(생성해야 함).

파일 이름을 일괄 변경하고 하위 폴더로 이동합니다(생성해야 함).

"10389-2001.pdf" 형식의 파일로 가득 찬 폴더가 있으므로 먼저 5자리 숫자, 하이픈, 4자리 숫자가 있습니다. 파일 자체는 "2001.pdf"로만 불리고 새 하위 폴더 "10389"로 이동되도록 모든 이름을 바꾸고 싶습니다. 이 하위 폴더는 아직 존재하지 않으므로 생성해야 합니다.

Windows 명령줄, Powershell 또는 Cygwin에서 이 작업을 수행하는 방법에 대한 제안을 환영합니다.

답변1

PowerShell 스크립트:

Get-ChildItem *-*.pdf|Foreach-object {
    $Dir, $File = $_.Name.Split('-')[0,1]
    if (!(Test-Path $Dir)){MD $Dir}
    $_| Move -Destination ("$Dir\$File") 
}

배치:

@echo off
for /F "Tokens=1* delims=-" %%A in ('Dir /B "*-*.pdf"') do (
    If not exist ".\%%A" MD ".\%%A"
    Move "%%A-%%B" "%%A\%%B"
)

이전 트리:

> tree /f .
Z:\
    10389-2001.pdf
    10815-2017.pdf

이후 트리:

> tree /f .
Z:\
├───10389
│       2001.pdf
└───10815
        2017.pdf

답변2

VBS를 사용하면 쉽습니다. 확장자가 '.vbs'인 파일에 코드를 복사합니다.

on Error Resume Next   
sFolder = "D:\test\"
dFolder = "D:\test1\"
Set oFSO = CreateObject("Scripting.FileSystemObject")

For Each oFile In oFSO.GetFolder(sFolder).Files
    NameParts = split(oFile.Name,"-")
    Set f = oFSO.CreateFolder(dFolder & NameParts(0))
    set fi = oFSO.GetFile(oFile)
    fi.Copy dFolder & NameParts(0) & "\" & NameParts(1)
Next

소스 및 대상 폴더를 조정하십시오. 끝에 "\"를 잊지 마세요. 대상 폴더가 존재해야 합니다. Quick'n'dirty 코딩. 오직 ?????-????? sourceFolder의 파일입니다.

관련 정보