у меня есть этот код
pushd "C:\Folders\"
for %%j in (*) do (
md "%%~nj"
move "%%j" "%%~nj"
)
popd
pause
exit
Это переместит файлы с тем же именем в папку с таким же именем, если папка не существует, будет создана новая папка. Ок, отлично.
У меня проблема в том, что мне нужна та же функция, что и выше, но я только смотрел на первые 4 символа. Например.
1234 - sample.jpg
1234 - sample-sm.jpg
1234 - sample-new.jpg
1234 - sample-right.jpg
1235 - sample.jpg
Файлы 1234 будут перемещены в ту же папку, так как первые 4 символа одинаковы, однако файлы 1235 будут перемещены в новую папку, поскольку первые символы отличаются.
Спасибо
@echo off
setlocal enabledelayedexpansion
pushd "C:\Folders\"
for %%a in (*) do (
set fldr=%%~na
set fldr=!fldr:~0,4!
md "!fldr!"
move "%%a" "!fldr!"
)
popd
pause
exit
Однако он создает новые папки с первыми 4 буквами и перемещает файлы в эти созданные папки... Он перемещает все с теми же первыми 4 буквами в правильную папку.
Так что нет, мне не нужно НЕ создавать каталог, а перемещать его в уже созданный каталог.