У меня есть этот кодПеремещение файлов на основе частичного имени - DOS/Batch
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 письмом правильно папка.
Так что мне это не нужно, чтобы создать каталог, но переместить его в уже созданный каталог.
Возможный дубликат [перемещение файлов в папки с частичными именами] (http://stackoverflow.com/questions/3181953/move-files-to-folders-with-partial-names) –
Возможно, я что-то упустил, но это мне не кажется, что это один и тот же вопрос. OP хочет создать папку с именем, которое сокращает имя файла; в то время как прежний вопрос SO заключался в поиске существующей папки с совпадением имени. –
Я думаю, что вы правы, но я не уверен, что у вас есть обе функции. Если папка существует (она будет), мне нужно, чтобы все файлы с SAME fist 4 chars были перемещены в эту папку. например – Arthor