Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   CMD/BAT Значение по условию (http://forum.oszone.net/showthread.php?t=347150)

Don_abbadon 28-11-2020 13:14 2941282

CMD/BAT Значение по условию
 
Здравствуйте, не могу понять как решить задачу(((
Вопрос такой: пользуюсь *cmd файлом для сортировки, за основу берётся _, как бы сделать так чтобы имена создавались немного по другому.
Сейчас сортирует по _ и файл с названием "22-Ямал_..." прикидывает в папку 22-Ямал, а как сделать, так, чтобы исключить 22-, а оставить просто Ямал? допустим берём значение начиная с - заканчивая _?
Перечитал help к команде SET и всё равно не пойму как это реализовать.

Код:

echo off
@for /f "tokens=1* delims=_" %%i in ('dir/a-d/b *.jpg') do @ 2>nul md "%%i"& move "%%i_%%j" "%%i"
echo %%i_%%j
md %%i
copy %%i_%%j %%i\%%i_%%j
)

megaloman 28-11-2020 14:29 2941293

Цитата:

Цитата Don_abbadon
прикидывает в папку »

Как понять? Если перемещает, то,
Код:

@Echo Off
cls
        Set "BoxIn=Z:\Box_In"
        Set "BoxOut=Z:\Box_Out"

        FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\*?-?*_*.jpg" /B /A:-D`) DO (
                If Exist "%BoxIn%\%%f" (
                        FOR /F "tokens=2 delims=-_" %%n IN ("%%f") DO (
                                2>nul Md "%BoxOut%\%%n"
                                Move /Y "%BoxIn%\*?-%%n_*.jpg" "%BoxOut%\%%n\"
                        )
                )
        )
pause
Exit /B

Если надо копировать, то
Код:

@Echo Off
cls
        Set "BoxIn=Z:\Box_In"
        Set "BoxOut=Z:\Box_Out"

        FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\*?-?*_*.jpg" /B /A:-D`) DO (
                FOR /F "tokens=2 delims=-_" %%n IN ("%%f") DO >nul xcopy /F /D /Y "%BoxIn%\%%f" "%BoxOut%\%%n\"
        )
pause
Exit /B


Don_abbadon 29-11-2020 10:34 2941389

[q=megaloman]прикидывает в папку »
Как понять? Если перемещает, то,

Да без разницы, код который я скинул выше перемещает в созданные папки.
Не работает, к сожалению. либо я что-то делаю не так.
Не сортирует по папкам, как код который я скинул выше(( в чем может быть причина?

megaloman 29-11-2020 11:14 2941396

Don_abbadon, Вы свои пути указали? Переименуйте тот командный, который тестируете, файл в .txt и приложите к сообщению. У Вас jpg-файлы, маска соответствует Вашим файлам? Если мой код не выдает никаких ошибок, однозначно - неверно указан входной каталог.

Don_abbadon 29-11-2020 11:40 2941401

Цитата:

Цитата megaloman
Вы свои пути указали? Переименуйте тот командный, который тестируете, файл в .txt и приложите к сообщению. У Вас jpg-файлы, маска соответствует Вашим файлам? Если мой код не выдает никаких ошибок, однозначно - неверно указан входной каталог. »

Да, указал, на сколько понял и разрешение поменял на tif, но что-то пошло не так, вот что я изменил:

@Echo Off
cls
Set "BoxIn=F:\Box_In"
Set "BoxOut=F:\Box_Out"

FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\*?-?*_*.tif" /B /A:-D`) DO (
FOR /F "tokens=2 delims=-_" %%n IN ("%%f") DO >nul xcopy /F /D /Y "%BoxIn%\%%f" "%BoxOut%\%%n\"
)
pause
Exit /B

В чём может быть проблема?
Спасибо.

Don_abbadon 29-11-2020 12:13 2941404

Цитата:

Цитата megaloman
Вы свои пути указали? Переименуйте тот командный, который тестируете, файл в .txt и приложите к сообщению. У Вас jpg-файлы, маска соответствует Вашим файлам? Если мой код не выдает никаких ошибок, однозначно - неверно указан входной каталог. »

Да, указал, на сколько понял и разрешение поменял на tif, но что-то пошло не так, вот что я изменил:

@Echo Off
cls
Set "BoxIn=F:\Box_In"
Set "BoxOut=F:\Box_Out"

FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\*?-?*_*.tif" /B /A:-D`) DO (
FOR /F "tokens=2 delims=-_" %%n IN ("%%f") DO >nul xcopy /F /D /Y "%BoxIn%\%%f" "%BoxOut%\%%n\"
)
pause
Exit /B

В чём может быть проблема?
Спасибо.

megaloman 29-11-2020 13:43 2941409

Вот в батник вставлен отладочные строки. Около Вашего батника создадутся файлы "имя вашего батника.log1" "имя вашего батника.log2"
Покажите хотя бы несколько строк из них
Код:

@Echo Off
cls
        Set "BoxIn=F:\Box_In"
        Set "BoxOut=F:\Box_Out"

        >"%~dpnx0.log1" 2>&1 Dir /B /A:-D "%BoxIn%\*.tif"
        >"%~dpnx0.log2" 2>&1 Dir /B /A:-D "%BoxIn%\*?-?*_*.tif"

        FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\*?-?*_*.tif" /B /A:-D`) DO (
                FOR /F "tokens=2 delims=-_" %%n IN ("%%f") DO >nul xcopy /F /D /Y "%BoxIn%\%%f" "%BoxOut%\%%n\"
        )
pause
Exit /B


Don_abbadon 29-11-2020 14:55 2941413

Цитата:

Цитата megaloman
Вот в батник вставлен отладочные строки. Около Вашего батника создадутся файлы "имя вашего батника.log1" "имя вашего батника.log2"
Покажите хотя бы несколько строк из них
Это »

Сейчас всё корректно отработало, спасибо Вам большое.


Время: 02:38.

Время: 02:38.
© OSzone.net 2001-