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

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

Ответить
Настройки темы
CMD/BAT - [решено] кириллические имена файлов и маска ~*.*

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


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

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


Господа, такая проблема:

при отборе файлов в циклах for или подпрограмме forfiles с именами латиницей всё хорошо, а вот кириллические отбираются с тильдой на любом месте (например, ПСКОВСК~1.DOC считается соответствующим маске). Кто-нибудь сталкивался с такой проблемой? Поиск не помог.

Отправлено: 14:26, 13-03-2012

 

Ветеран


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

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


Все сталкивались. Это короткие имена файлов и папок:
Код: Выделить весь код
dir /x
Таковы особенности работы функций WinAPI, насколько я понимаю — поиск ведётся не только по длинным, но и по коротким именам.

P.S. Маска, всё же, наверное «*~*.*»?!
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:03, 13-03-2012 | #2



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

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


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


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

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


Маска именно ~*.*
Суть именно в том, чтобы отобрать файлы, у которых первым (а не любым) символом является тильда.

Отправлено: 15:09, 13-03-2012 | #3


Ветеран


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

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


ffs2001, приведите длинное имя файла «ПСКОВСК~1.DOC».

Приведите Ваш код для «в циклах for или подпрограмме forfiles», приводящий к вышеуказанному эффекту.

Отправлено: 16:05, 13-03-2012 | #4


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


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

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


Имя файла (например):
ПСКОВС~1.doc (т.е. это и есть полное имя, и тильда там есть в любом отображении)

код для for
Код: Выделить весь код
FOR /R "D:\" %%I in (*.tmp ~*.*) do (del "%%~fI")
код для forfiles
Код: Выделить весь код
forfiles -pD:\ -s -m~*.* -d-7 -c"CMD /C del /AR /AH /A /p ""@FILE"""

Отправлено: 17:17, 13-03-2012 | #5


Ветеран


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

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


Цитата ffs2001:
Имя файла (например):
ПСКОВС~1.doc (т.е. это и есть полное имя, и тильда там есть в любом отображении) »
Уверены?

Код: Выделить весь код
C:\Песочница\0003>dir /x
…
13.03.2012  17:24                 0 ~10E37~1.DOC ПСКОВС~1.doc
…
Отсюда — и попадание под Вашу маску.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:22, 13-03-2012 | #6


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


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

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


Ага. Спасибо.

Однако в папке с этим файлом ещё масса таких же, "неявно" начинающихся с тильды. При этом в результаты поиска обоих циклов они не попадают (есть, например, файл с коротким именем ~301~.doc и длинным - очень длинным, с пробелами - кириллическим именем; условиям циклов он соответствует, а в результаты не попадает). С чем это связано?

Отправлено: 17:33, 13-03-2012 | #7


Ветеран


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

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


ffs2001,
Цитата:
отобрать файлы, у которых первым (а не любым) символом является тильда.
Пропускай через findstr
Код: Выделить весь код
for /f "tokens=*" %%i in (' "dir /b | findstr "^^~.*"" ') do echo %%i

Последний раз редактировалось Foreigner, 13-03-2012 в 19:28.

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

Отправлено: 18:55, 13-03-2012 | #8


Ветеран


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

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


Цитата ffs2001:
…и длинным - очень длинным, с пробелами - кириллическим именем; »
Приведите здесь это имя.

Отправлено: 19:52, 13-03-2012 | #9


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


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

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


А, прошу прощения. Там не тильды, там дефисы. C тильдами всё попадает.

То есть с тильды начинаются когда-то побитые имена.

Foreigner,
спасибо за подсказку. Правда, хотел делать через forfiles, т.к. через них проще работать с датой.
Жаль, спутали мне все карты эти короткие и битые имена...

Отправлено: 22:31, 13-03-2012 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Вывести имена файлов *.txt в каталоге VALET93 Скриптовые языки администрирования Windows 34 12-04-2014 15:36
В Интернете появятся кириллические доменные имена OSZone News Новости информационных технологий 8 31-10-2009 02:42
Имена файлов при двухпроходном кодировании. HiDux Видео и аудио: обработка и кодирование 12 28-08-2009 00:09
Интерфейс - Имена файлов в папке Windows\Media Билл Гейтс Microsoft Windows 2000/XP 3 09-11-2008 13:10
Suse/OpenSuSE - Не отображаются русские имена файлов на xfs томе Linuxman Общий по Linux 0 24-04-2008 17:13




 
Переход