Войти

Показать полную графическую версию : Перебрать файлы по именам


EricScream
29-08-2017, 07:37
Пишу программу, которая должна раскидывать файлы по папкам с схожими именами, а то есть КП-11111_1 КП-11111_2 должны быть помещены в папку КП-11111, файлы НВ-222_1 и НВ-222_2 в папку НВ-222 и т.д. По отдельности эти файлы перемещаюся в папки, но если они находятся в одном каталоге при var = 6, получаются папки КП-111 и НВ-222.
Вопрос: как сделать проверку количества символов в имени файлов или брать имя до нижнего подчеркивания?

Имеется код:

@echo off
setlocal EnableDelayedExpansion
set fold=h:\1
set pict=*.png,*.jpg,*.ico,*.gif,*.tif
set /p var="Enter the number : "
if "%var%" == "0" ( exit )
pushd
chdir /d "%fold%"
for /f "delims=" %%a in ('dir %pict% /b /a:-d') do (
set Where=%%a
set Where1=!Where:~0,%var%!
if not exist !Where1! md !Where1!
move /y "%%a" !Where1!\
)
popd
pause

megaloman
29-08-2017, 11:52
брать имя до нижнего подчеркивания »@Echo Off

Set "BoxIn=Z:\Box_In"
Set "Mask=*.png *.jpg *.ico *.gif *.tif"

Pushd "%BoxIn%" && (
FOR /F "usebackq tokens=1* delims=_" %%i IN (`Dir /B /A:-D %Mask% 2^>nul`) DO (
If "%%j"=="" (
If Not Exist "%%~ni" Md "%%~ni"
Move "%%i" "%%~ni\" >nul
) Else (
If Not Exist "%%i" Md "%%i"
Move "%%i_%%j" "%%i\" >nul
)
)
)
Popd
@Echo Off

Set "BoxIn=Z:\Box_In"
Set "Mask=*.png *.jpg *.ico *.gif *.tif"

Pushd "%BoxIn%" && (
FOR /F "usebackq tokens=1* delims=_" %%i IN (`Dir /B /A:-D %Mask% 2^>nul`) DO (
If Not "%%j"=="" (
If Not Exist "%%i" Md "%%i"
Move "%%i_%%j" "%%i\" >nul
)
)
)
Popd




© OSzone.net 2001-2012