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

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

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

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


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

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


Помогите написать bat-файл, с поиском файлов такого вида *xxx*, (rt555.zip или acty555.pdf)
где * - возможны любые символы
ХХХ - цифры, которые обьединяют все эти файлы, но их нужно ввести с клавиатуры, они каждый раз разные
и с последующим их копированием
вот начал:

Цитата:
@Echo off
Set FDir="D:\AST"
set /P Maska="В ведите номер: "

FOR /R %FDir% %%i IN (%Maska%) DO Set FileName="%%i"
Echo %FileName%
set /p answer=Копируем на FTP(Y/N)?
if /i '%answer%'=='Y'
..
else
..
не получаться, не ищет

-------
Linux дружелюбная система, но только она сама выбирает друзей
---------------------------------------------------------------
Itword


Отправлено: 14:25, 05-11-2012

 

Ветеран


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

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


Код: Выделить весь код
set /p sDigits=Enter digits for mask:

if defined sDigits (
	for /f "delims=" %%i in ('dir /s /a "d:\ast\*%sDigits%*.*"') do echo %%i
)

Последний раз редактировалось Iska, 05-11-2012 в 19:37.

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

Отправлено: 16:08, 05-11-2012 | #2



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

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


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


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

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


Iska, спасибо, работает, а можно вывод (echo %%i) сократить до даты и имя файла

-------
Linux дружелюбная система, но только она сама выбирает друзей
---------------------------------------------------------------
Itword


Отправлено: 16:49, 05-11-2012 | #3


Ветеран


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

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


Ceval, это я ошибся. Добавьте выделенный параметр в команду: «…('dir /s /b /a "d:\ast\…».

Отправлено: 17:06, 05-11-2012 | #4


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


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

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


и теперь все это дело скопировать, найденные файлы

Цитата:
@Echo off
set Ftp_vl="D:\FTP"
set /p sDigits=Enter digits for mask:

if defined sDigits (
for /f "delims=" %%i in ('dir /s /d /a "e:\ast\*%sDigits%*.*"') do echo %%i)
set /p answer=Љ®ЇЁа㥬 ** FTP(y/n)?

if /i '%answer%'=='y' xcopy /-y "%%i" "%ftp_vl%"
else
quit

-------
Linux дружелюбная система, но только она сама выбирает друзей
---------------------------------------------------------------
Itword


Последний раз редактировалось Ceval, 05-11-2012 в 18:29.


Отправлено: 17:26, 05-11-2012 | #5


Аватара для gora

Ушёл из жизни


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

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


Iska, у меня не сработало при следующих условиях:
- папка e:\Temp 1\1\
- содержимое папки:
Цитата:
2\ (папка)
config
2.reg.bat
num _num.bat
acty555.pdf
1.reg
2.reg
link.txt
new.txt
PuntoSw3_config.txt
Текстовый документ.txt
fname31.xls
fname3.zip
fname555aa1.zip
rt555.zip
- маска = 1
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:40, 05-11-2012 | #6


Ветеран


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

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


gora, подтверждаю. Случается, я забываю про такую тонкость, что WinAPI ведёт поиск по маске не только по длинным, но и по коротким именам файлов.

Честно говоря, я не вижу простого выхода в данной ситуации. Возможно, лучшим выходом будет переход к использованию PowerShell:
Код: Выделить весь код
$sMask = Read-Host -Prompt "Enter mask:"
Get-ChildItem -Path "E:\Temp 1\1" -Recurse -Include "*$sMask*.*"
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:36, 05-11-2012 | #7


Ветеран


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

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


Цитата Iska:
не вижу простого выхода в данной ситуации »
Можно через findstr
Код: Выделить весь код
dir /b /a | findstr "1"

Отправлено: 20:02, 05-11-2012 | #8


Аватара для gora

Ушёл из жизни


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

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


Цитата Iska:
но и по коротким именам файлов »
А я то голову ломал с этой единицей...

Можно попробовать так:
Код: Выделить весь код
@Echo off
Setlocal EnableDelayedExpansion
Set FDir=e:\Temp 1\1
Set /P Maska="В ведите номер: "

For /F "tokens=* delims=" %%i In ('Dir /B /A:-D "%FDir%\*.*"') Do (
	Set ti=%%~ni
	If Not !ti!==!ti:%Maska%=! Echo %%i
)
Pause>Nul
Цитата Foreigner:
Можно через findstr »
Боюсь, что могут пролезть и файлы с маской в расширении (test.123)

Последний раз редактировалось gora, 05-11-2012 в 20:25.


Отправлено: 20:14, 05-11-2012 | #9


Ветеран


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

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


Цитата gora:
Боюсь, что могут пролезть и файлы с маской в расширении (test.123) »
Тогда, чем городить dir на dir'e, проще через where.exe
Код: Выделить весь код
@echo off
setlocal

set "rootdir=C:\ABC"
set "mask=*"
set /p mask="Enter search mask: "

for /f "tokens=*" %%i in (' where /r "%rootdir%" *%mask%*.* ') do echo %%i

Последний раз редактировалось Foreigner, 05-11-2012 в 21:02.

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

Отправлено: 20:36, 05-11-2012 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] поиск файла по маске и запись этого имени в переменную ___dima___ Скриптовые языки администрирования Windows 20 18-06-2017 01:46
CMD/BAT - [решено] Запуск bat-файла от имени админа.Как сделать каталог этого bat-файла текущим?? axmed0207 Скриптовые языки администрирования Windows 1 19-01-2012 06:14
CMD/BAT - [решено] Поиск, остановка процесса, поиск и замена файла на разных дисках Gawr33 Скриптовые языки администрирования Windows 11 23-04-2011 23:09
CMD/BAT - [решено] Созд.*.txt по имени файла, с перемещением *.txt и файла в папку с именем файла. OSArev Скриптовые языки администрирования Windows 2 30-01-2011 11:58
Ошибка - Каракули в реестре "Синтаксическая ошибка в имени файла,имени папки или метке тома" permas Microsoft Windows 2000/XP 2 20-02-2010 19:30




 
Переход