Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - CMD/BAT Значение по условию

Ответить
Настройки темы
CMD/BAT - CMD/BAT Значение по условию

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте, не могу понять как решить задачу(((
Вопрос такой: пользуюсь *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
)

Отправлено: 13:14, 28-11-2020

 

Ветеран


Contributor


Сообщения: 2706
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Цитата 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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 28-11-2020 в 15:09.


Отправлено: 14:29, 28-11-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

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

Последний раз редактировалось Don_abbadon, 29-11-2020 в 10:53. Причина: добавил пример.


Отправлено: 10:34, 29-11-2020 | #3


Ветеран


Contributor


Сообщения: 2706
Благодарности: 1684

Профиль | Отправить PM | Цитировать


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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:14, 29-11-2020 | #4


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата 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

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

Отправлено: 11:40, 29-11-2020 | #5


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата 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

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

Отправлено: 12:13, 29-11-2020 | #6


Ветеран


Contributor


Сообщения: 2706
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Вот в батник вставлен отладочные строки. Около Вашего батника создадутся файлы "имя вашего батника.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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:43, 29-11-2020 | #7


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 14:55, 29-11-2020 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - CMD/BAT Значение по условию

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] cmd скрипт - получить данные по curl, извлечь одно значение и вывести его Sick_013 Скриптовые языки администрирования Windows 2 07-04-2020 14:49
CMD/BAT - bat смена часового пояса по условию sdaa113 Скриптовые языки администрирования Windows 11 21-07-2018 19:25
CMD/BAT - CMD/BAT Поиск по каталогам файлов bat и конвертирование их в JPEG freerider1989 Скриптовые языки администрирования Windows 1 18-04-2016 08:37
CMD/BAT - [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле InVariable Скриптовые языки администрирования Windows 4 22-05-2015 20:06
CMD/BAT - Вопросы по написанию скриптов на CMD/BAT kelevara Тест-форум 1 26-04-2013 15:03




 
Переход