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

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

Ответить
Настройки темы
CMD/BAT - [решено] Переместить файлы, в имени которых больше трех цифр.

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


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

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


Всем привет!

Собственно, задачка описана в теме. Искомый каталог и каталог для перемещения передаются параметрами bat-файлу. И желательно было бы вы перемещаемые файлы вывести на экран.

Отправлено: 17:04, 28-12-2010

 

Аватара для gora

Ушёл из жизни


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

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


Код: Выделить весь код
@echo off 
SetLocal enabledelayedexpansion
:: исходная папка
Set folder=%~1
:: папка получатель
Set out=%~2

For /R "%folder%" %%a In (*.*) Do (
	Set name=#%%~na
	Call :_cntchr "!name!" ocnt
	For /L %%i In (0,1,9) Do Set name=!name:%%i=!
	Call :_cntchr "!name!" tcnt
	Set /A delta=ocnt-tcnt
	If !delta! GTR 3 Echo %%a& Move "%%a" "%out%\%%~nxa"
)
pause

:_cntchr
Set %2=0
Set tn=%~1
:_loop
If Not Defined tn GoTo :EOF
Set /A %2+=1
Set tn=!tn:~1!
GoTo :_loop
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:19, 29-12-2010 | #2



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

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


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


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

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


Все работает, да. Сейчас буду курить код, разбираться)
Gora, спасибо большое!

Отправлено: 14:00, 29-12-2010 | #3


Аватара для El Sanchez

Ветеран


Contributor


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

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


hazardhz, до кучи вариант №2:
Код: Выделить весь код
@Echo Off
If "%~1"=="" Echo Error. Source folder is not specified.&Exit /B 1
If "%~2"=="" Echo Error. Output folder is not specified.&Exit /B 1
For /F "Tokens=*" %%A In ('Dir /B /S /A-D "%~1"^|FindStr /R .*\\[^^^^\\]*[0-9][^^^^\\]*[0-9][^^^^\\]*[0-9][^^^^\\]*[0-9][^^^^\\]*[.].*') Do (
	Echo %%A
	Call :_Func "%%A" "%~1" "%~2"
)
GoTo :EOF

:_Func
	Set Source=%~dp1
	Call MD "%%Source:%~2\=%~3\%%" 2>nul
	Call Move /Y %1 "%%Source:%~2=%~3\%%" >nul

Последний раз редактировалось El Sanchez, 30-12-2010 в 22:20.


Отправлено: 17:45, 30-12-2010 | #4


Ветеран


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

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


Здравствуйте. Напишите, пожалуйста, если это возможно, как реализовать такое при помощи файла *.cmd
1) Для примера, в папке C:\1 есть как файлы формата %y%.%m%.%d%.txt, где %y% - год, %m% - месяц, %d% - день, .txt - расширение файла, так и файлы других форматов: с расширениями, отличными от *.txt и другими названиями. Для примера, в папке C:\1 есть как файлы:
читать дальше »
2011.01.23.txt
2011.02.26.txt
2011.03.30.txt
...
так есть и файлы:
читать дальше »
VFS.vfs
filelist.tpl
...
2) Нужно при запуске файла *.cmd в папке C:\1 найти все файлы, название+расширение которых соответствует пункту 1), т. е. %y%.%m%.%d%.txt и переместить все эти файлы в папку C:\2. Спасибо.

Отправлено: 09:51, 14-05-2011 | #5


Ветеран


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

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


SharkyEXE,
Код: Выделить весь код
@echo off

for /f "tokens=*" %%i in ('

    dir /b /a "C:\1\*.txt" ^| findstr /b /e "[0-9]*\.[0-9]*\.[0-9]*\.txt"

') do move %%i "C:\2"
В зависимости от конкретного случая можно упростить условия поиска или наоборот привести к точному соответствию, например:
Код: Выделить весь код
findstr /i /b /e "[0-9][0-9][0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\.txt"

Последний раз редактировалось Foreigner, 14-05-2011 в 12:43.

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

Отправлено: 12:32, 14-05-2011 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] переместить файлы по папкам согласно списку shadowbat Скриптовые языки администрирования Windows 9 17-11-2023 14:51
Мультимедиа - [решено] Проблема с mp3-файлами битрейт которых больше 300 kbps Zuboklev Программное обеспечение Windows 8 11-04-2011 10:50
CMD/BAT - [решено] Переместить файлы, содержащие определенное значение, +одноименные к ним. jahvdet Скриптовые языки администрирования Windows 3 02-10-2010 17:12
Ошибка - [решено] Не могу переместить AVI файлы через панель инструментов. kp.Drako Microsoft Windows 2000/XP 11 12-06-2010 00:36
Загрузка - меню загрузки трех операционных систем с трех HDD sasa74 Microsoft Windows 7 1 13-11-2009 20:34




 
Переход