Пакетный файл перемещает файлы на основе последних символов их имени - PullRequest
0 голосов
/ 14 июня 2019

Возможно ли для bat-файла поиск папок и файлов и
, если он находит файл, названный как часть имени папки, для перемещения этого файла в эту папку.

Например:

D:\
└───Test
    │   161136.pdf
    │   23752.pdf
    │   24334.pd
    │
    ├───017-161136
    ├───021-23752
    ├───120-24334
    └───1560-4334

Имена файлов состоят из 4-6 символов, а папки созданы так, чтобы содержать имя файла.

Ожидаемый результат

D:\
└───Test
    ├───017-161136
    │       161136.pdf
    │
    ├───021-23752
    │       23752.pdf
    │
    ├───120-24334
    │       24334.pdf
    │
    └───1560-4334

1 Ответ

0 голосов
/ 14 июня 2019

Я не вижу большой разницы, используя PowerShell

## Q:\Test\2019\06\14\SO_56599031.ps1
PushD D:\Test
Get-ChildItem *-* -Directory | ForEach-Object {
    Move-Item ("{1}*" -f ($_.Name.split('-')[1])) -Dest $_.Name -WhatIf
}
PopD

или пакет для решения задачи

:: Q:\Test\2019\06\14\SO_56599031.cmd
@Echo off
Pushd D:\Test
for /F "tokens=1* delims=-" %%A in ('Dir /B /AD *-*') do (
  move "%%~B*" "%%A-%%B"
)
PopD
...