EricScream |
29-08-2017 07:37 2761236 |
Перебрать файлы по именам
Пишу программу, которая должна раскидывать файлы по папкам с схожими именами, а то есть КП-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
|
Цитата:
Цитата EricScream
брать имя до нижнего подчеркивания »
|
КП-11111_1.* КП-11111_2.* КП-11111.* будут помещены в одну папку. Итд.
Код:
@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
Если надо вот так: КП-11111_1.* КП-11111_2.*, то:
Код:
@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
|
Время: 00:30.
© OSzone.net 2001-