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

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

Ответить
Настройки темы
CMD/BAT - Нужен список файлов с именами в 8 знаков. Dir ????????.TXT выдает все .

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


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

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


Нужен список файлов с именами в 8 знаков. Dir ????????.TXT выдает все .

Отправлено: 09:03, 07-08-2012

 

Ветеран


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

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


Код: Выделить весь код
wmic.exe DataFile where "Drive='c:' and Path='\\Some\\Path\\' and Extension='txt' and FileName like '________'" get Name

Отправлено: 10:52, 07-08-2012 | #2



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

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


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


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

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


А без WMIC можно. Запуск батника не по админом будет.

Отправлено: 11:17, 07-08-2012 | #3


Ветеран


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

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


Код: Выделить весь код
dir /b *.txt|findstr.exe /r /c:"^........\.txt$"

Отправлено: 11:35, 07-08-2012 | #4


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


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

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


Результат не тот что надо. Файлы меньше 8 знаков в имени тоже попадают.

Отправлено: 12:06, 07-08-2012 | #5


Ветеран


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

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


↧ Демонстрация ↧
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for /l %%i in (0,1,9) do (
	set sName=!sName!%%i
	>nul copy nul !sName!.txt
)

dir /b *.txt
echo.
dir /b *.txt|findstr.exe /r /c:"^........\.txt$"

endlocal
exit /b 0
↧ Результат ↧
Код: Выделить весь код
C:\Песочница\0017>0002.cmd

0.txt
01.txt
012.txt
0123.txt
01234.txt
012345.txt
0123456.txt
01234567.txt
012345678.txt
0123456789.txt

01234567.txt


У меня, как видите, не попадают. Что не так?

Отправлено: 12:57, 07-08-2012 | #6


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


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

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


Нужны файлы только с 8 знаками в имени не больше не меньше.

работает только в тек каталоге, а если dir /s выдает все подряд.

Вообщем задача была такая. Поиск текстовых файлов по по всему диску с: имена 8 знаков и копирование их в определенную папку на диск D:. Далее имеется файл со списком имен текстовых файлов. нужно их найти на диске с: и удалить.

Отправлено: 13:22, 07-08-2012 | #7


Ветеран


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

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


vangogru, видите, насколько важно формулировать полное ТЗ с самого начала, а не вспоминать об этом в середине обсуждения.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:42, 07-08-2012 | #8


Ветеран


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

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


vangogru, попробуйте такого уродливого монстра для отбора:
Код: Выделить весь код
dir /b /s *.txt|findstr.exe /v /r /c:"^.*\\\\.......\.txt$" /c:"^.*\\.\\......\.txt$" /c:"^.*\\..\\.....\.txt$" /c:"^.*\\...\\....\.txt$" /c:"^.*\\....\\...\.txt$" /c:"^.*\\.....\\..\.txt$" /c:"^.*\\......\\.\.txt$" /c:"^.*\\.......\\\.txt$"|findstr.exe /r /c:"^.*\\........\.txt$"
Потом попробуйте попроще:
Код: Выделить весь код
dir /b /s *.txt|findstr.exe /r /c:"^.*\\[^\\][^\\][^\\][^\\][^\\][^\\][^\\][^\\]\.txt$"

Последний раз редактировалось Iska, 08-08-2012 в 02:13. Причина: Код некорректен


Отправлено: 16:43, 07-08-2012 | #9


Ветеран


Contributor


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

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


Iska, Вот еще один рабочий монстр
Код: Выделить весь код
@Echo Off
Set Where=E:\*.bmp

SetLocal EnableExtensions
SetLocal EnableDelayedExpansion

FOR /F "usebackq delims=" %%f IN (`dir "%Where%" /s /b /A:-D`) DO (
	Set fname=%%~nf
        Set ff=!fname!12345678
        Set ff=!ff:~0,8!
        If !ff!==!fname! @Echo %%f 
)
vangogru, Вместо @Echo %%f Вы вольны нарисовать любую команду (Copy, Move ...)

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


Последний раз редактировалось megaloman, 07-08-2012 в 22:15.

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

Отправлено: 20:45, 07-08-2012 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - работа с 2 текстовыми файлами, именами файлов и всё в цикле Тишина Скриптовые языки администрирования Windows 4 15-07-2012 20:26
текстовый файл с именами всех файлов в папке socap AutoIt 19 19-02-2012 16:42
Интерфейс - Синхронизация файлов с одинаковыми именами но разного размера. Houre Microsoft Windows 2000/XP 5 20-09-2011 12:32
Проблема с русскими именами файлов iml Общий по Linux 7 25-09-2006 12:40
[RedHat 9] Mounting FAT32 с русскими именами файлов! Kentavriusis Общий по Linux 10 21-04-2003 22:16




 
Переход