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

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

Ответить
Настройки темы
CMD/BAT - Перебрать файлы по именам

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


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

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


Пишу программу, которая должна раскидывать файлы по папкам с схожими именами, а то есть КП-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

Отправлено: 07:37, 29-08-2017

 

Ветеран


Contributor


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

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


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

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


Последний раз редактировалось megaloman, 29-08-2017 в 12:06.


Отправлено: 11:52, 29-08-2017 | #2



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

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



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доступ - Доступ по именам в сети Triarch Microsoft Windows 7 0 28-11-2012 08:34
MSFT SQL Server - [решено] Обращение к mssql серверу по dns именам Joni Программирование и базы данных 4 10-07-2012 03:50
2008 - Организация доступа по коротким именам. Несколько сегментов. vanexe1 Windows Server 2008/2008 R2 6 27-09-2010 20:53
[решено] Не видит компы в сети по именам, но видит по IP MANnik Microsoft Windows 2000/XP 2 11-08-2006 11:41
Клиенты не могут подключиться к ФС по именам \\server, а только по \\IP адресам wwwSerg Microsoft Windows NT/2000/2003 7 24-08-2005 23:57




 
Переход