Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 8

Автор: bomzzz
Дата сообщения: 23.08.2010 16:57
Участников 1434276 - а вот столько не просило. хватит ныть не нравится форум - инет большой

Добавлено:
не можешь себе инет купить нормальный возьми книжку в билиотеке и сиди читай
Автор: wolf0425
Дата сообщения: 23.08.2010 16:59
lorents
Цитата:
Подскажите, пожалуйста, как можно удалить дублирующие файлы, которые в папке. Под дубликатами я подразумеваю файлы которые весят одинаково.
Скажите пожалуйста в какую сторону смотреть?
в сторону цикла for /f "delims=" %%a in ('dir /b /o:s') do

делаешь сравнение размера текущего файла с предыдущим, если совпадает - удаляешь


Добавлено:

Цитата:
не нравится форум - инет большой
форум то мне нравится - придурок один не нравится
Автор: bomzzz
Дата сообщения: 23.08.2010 17:03
иди утопись
Автор: lorents
Дата сообщения: 23.08.2010 17:14
bomzzz
Я не совсем понимаю, как это сделать?

Код: for /f "delims=" %%i in ('dir /b /s /a-d PunyPng\*.png') do (

)
Автор: bomzzz
Дата сообщения: 23.08.2010 17:16
lorents
сложную конструкцию надо делать из фор и фаиндстр. из меня файл был с хттп ссылками после перезаписывания батником из него пропадали все дубликаты
Автор: lorents
Дата сообщения: 23.08.2010 17:19
wolf0425

Цитата:
делаешь сравнение размера текущего файла с предыдущим, если совпадает - удаляешь

понял, через %%~zi сравнивать размер, пойду посмотрю как сделать это, выход опять через цикл.
Автор: bomzzz
Дата сообщения: 23.08.2010 17:22
ECHO OFF
COLOR 9F
CLS
FOR /F "EOL=C" %%I IN (URL.TXT) DO SET STRING=%%I
FIND /v "%STRING%" <URL.TXT > URL1.TXT
SET STRING=%STRING:&=^^^&%
start USDownloader.exe %STRING%
DEL /Q URL.TXT
REN URL1.TXT URL.TXT


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


Добавлено:
%%~zi точно если делать так и столбцы не нужны а только пути
Автор: ivn1978
Дата сообщения: 23.08.2010 17:27
еще может кто подскажет, можно ли как нибудь из батника прочесть, запущен ли он от имени админа или нет?
Автор: bomzzz
Дата сообщения: 23.08.2010 17:29
ivn1978
не знаю есть ли такая специальная команда но точно можно попробовать выполнить действие от имени админа и если оно не получица - ....

Добавлено:
например создать строчку в реестре со статусом только для админа и батник может при запуске ее удалять и записывать назад - если получица конечно. или типа того.
Автор: ivn1978
Дата сообщения: 23.08.2010 17:31
bomzzz

Добавлено:

Цитата:
создать строчку в реестре со статусом только для админа

в какой раздел?
Автор: bomzzz
Дата сообщения: 23.08.2010 17:33
попробуй покопать в строну команды tasklist, или посматреть WMI -вот тут то точно можно любые сведения о процессе получить

Добавлено:
в любой. ну лучше всего сюда HKEY_LOCAL_MACHINE\SOFTWARE

Добавлено:

Цитата:

TASKLIST [/S <система> [/U <имя пользователя> [/P [<пароль>]]]]
[/M [<модуль>] | /SVC | /V] [/FI <фильтр>] [/FO <формат>] [/NH]

Описание:
Отображает список приложений и связанные с ними задачи/процессы, которые
исполняются в текущий момент на локальном или удаленном компьютере.


/FI <фильтр> Отображение списка задач, которые отвечают
указанному в фильтре критерию.

Фильтры:
Имя фильтра Допустимые операторы Допустимые значения
----------- -------------------- -------------------

USERNAME eq, ne Имя пользователя в формате
[<домен>\<пользователь>]
SERVICES eq, ne Имя службы

TASKLIST /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq running"


имя процесса для всех батников - CMD
вот так отображается с именем пользователя список процессов
tasklist /V
Автор: ivn1978
Дата сообщения: 23.08.2010 17:49
bomzzz
но теоретически могут быть запущены и другие экземпляры cmd... так что лучit наверно с реестром
Автор: bomzzz
Дата сообщения: 23.08.2010 17:51
угу. на каждый батник будет свой cmd. может можно через wmi получить ид своего процесса
Автор: lorents
Дата сообщения: 23.08.2010 18:08
Я все ни как не могу реализовать способ удаления дублирующие файлы, помогите пожалуйста
Автор: bomzzz
Дата сообщения: 23.08.2010 18:12
дир вроде может рассортировать список по любому параметру, рассортируй его по размеру, таким образом уже все дубликаты у тебя окажуться в строчках рядом. теперь если размер нижнего файла равен предъидущему его можно удалить.
например
Автор: lorents
Дата сообщения: 23.08.2010 18:17
bomzzz
я как раз так и хочу сделать, но я не пойму как это сделать
Автор: bomzzz
Дата сообщения: 23.08.2010 18:19
ну я не могу тебе сходу правильно написать, че сложного то
сетенайблелокал
фор %%И (дир по размеру) ду (
иф размерпеременной=размер%%И удалить переменная
сет переменная=%%И

)

вот так примерно
Автор: mime13
Дата сообщения: 23.08.2010 18:23
Прошу помочь: есть тхт файл (например 001.txt) примерно на 200 строк, нужно создать файлы где именем каждого будет одна строчка из исходного файла,
т.е. берем первую строчку, создаем файл, в название помещаем всю строку целиком,
берем вторую строчку, создаем файл, помещаем строку в название... и т.д.
тут похоже через переменные нужно, а я с ними дела особо не имел.
или подскажите куда копать.
Автор: bomzzz
Дата сообщения: 23.08.2010 18:26
mime13

FOR /F "EOL=" %%I IN (MY.TXT) DO ECHO OFF>%%I
вот так примерно вместо "EOL=" будут параметры имеющие конкретную привязку к конкретному ткст файлу

Добавлено:
из интересу проверил работает
ECHO OFF
COLOR 9F
CLS
FOR /F "EOL=" %%I IN (MY.TXT) DO ECHO OFF>%%I
pause

с таким файлом,

1
2
3

в основном зависит будут ли в строчках пробелы
Автор: mime13
Дата сообщения: 23.08.2010 18:44
bomzzz
не работает.
скрипт отрабатывает, но не понимает пробелы - если в строке было 5 слов то он создает 5 файлов и вырубается.
и еще вместо русских букв - иероглифы
Автор: bomzzz
Дата сообщения: 23.08.2010 18:45
ECHO OFF
COLOR 9F
CLS
CHCP 1251
FOR /F "DELIMS=! EOL=" %%I IN (MY.TXT) DO ECHO OFF>"%%I"

вот так будет работать независимо от того есть ли пробелы в именах или нет
CHCP 1251 - это для русских букаф
Автор: mime13
Дата сообщения: 23.08.2010 18:47
Спасибо большое.
Последний вариант, то что надо.
Автор: bomzzz
Дата сообщения: 23.08.2010 18:48
я проверил - работает
восклицательного знака не может быть в именах так что знак универсальный тута

чета ступил - может быть восклицательный знак в именах.
замени если надо на слеш например
FOR /F "DELIMS=/ EOL=" %%I IN (MY.TXT) DO ECHO OFF>"%%I"
не на любой - который служебным в баниках не является
Автор: king_stiven
Дата сообщения: 23.08.2010 19:32
sed -n "G; s/\n/&&/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P"
Удалить дубликаты строк в файле. Но почему то кириллицу игнорирует. Кто знает,как поправить?
Автор: bomzzz
Дата сообщения: 23.08.2010 19:35
king_stiven
кодировку в батнике переключи может поможет
chcp 1251
Автор: Rush
Дата сообщения: 23.08.2010 19:44
bomzzz

Цитата:
чета ступил - может быть восклицательный знак в именах.
замени если надо на слеш например
FOR /F "DELIMS=/ EOL=" %%I IN (MY.TXT) DO ECHO OFF>"%%I"
не на любой - который служебным в баниках не является

Просто
Код: for /f "tokens=*" %%i in (MY.TXT) do echo off>"%%i"
Автор: bomzzz
Дата сообщения: 23.08.2010 19:48
Rush
помоги тут с процентами разобраться. этот батник удаляет все дубликаты файлов по размеру

так понял тут сравнивать нельзя так
Автор: Rush
Дата сообщения: 23.08.2010 19:51
bomzzz

Цитата:
помоги тут с процентами разобраться

Какие-такие проценты?
Автор: lorents
Дата сообщения: 23.08.2010 19:53
bomzzz
а что именно надо доделать?
Автор: bomzzz
Дата сообщения: 23.08.2010 19:55
lorents
проверяй


ECHO OFF
COLOR 9F
CLS
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "delims=* EOL=" %%I IN ('DIR /A:-D /O:S /B') DO (
IF %%~zI==!PREVIOUSFILESIZE! DEL "%%I"
SET PREVIOUSFILESIZE=%%~zI
)


у меня работкаит.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

Предыдущая тема: XP не видит второй раздел на съемном USB-HDD


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.