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

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

Автор: fractalzZz
Дата сообщения: 18.04.2016 00:54
king_stiven

Попробовал, этот вариант также отрабатывает, но опять не до конца. Значит, первое, что прямо бросается в глаза - имена в путях с символами наподобие "û", "â" (там как форум отображает тут не символ, а их код - имелись ввиду символы, наподобие немецких умляутов, например "u"+"^" сверху или "о" + ".."сверху) и другие unicode-like - батник пропускает - это не допустимо.
Автор: nik4z
Дата сообщения: 18.04.2016 01:12
fractalzZz
Попробуй еще так:

Код: del /f /q my_filelist.txt
for /f "tokens=*" %%a in (filelist.txt) do if NOT exist "%%~sa" echo."%%a">>my_filelist.txt
Автор: fractalzZz
Дата сообщения: 18.04.2016 01:32
nik4z

Так тоже пропускает файлы с unicode символами.
Автор: nik4z
Дата сообщения: 18.04.2016 01:47
fractalzZz
А так:

Код: del /f /q my_filelist.txt
for /f "tokens=*" %%a in (filelist.txt) do dir /b /a:-d "%%~sa" || echo."%%a">>my_filelist.txt
Автор: fractalzZz
Дата сообщения: 18.04.2016 02:39
nik4z

Второй вариант - тот же результат - пропускает все unicode файлы. Причем (как и во всех случаях ранее) в самом выходном my_filelist.txt файле имя получаеся без юникод символов (могу предположить оно как-то преобразует имя и потом ищет по этому имени).
Автор: nik4z
Дата сообщения: 18.04.2016 02:48
fractalzZz
А просто выполни такой батник

Код: del /f /q my_filelist.txt
for /f "tokens=*" %%a in (filelist.txt) echo."%%a">>my_filelist.txt
Автор: VidelSamogO
Дата сообщения: 18.04.2016 12:30
А как разложить папки по папкам, создавая каталоги с именами и датами на основе дат создания вложенных каталогов?

Пример

Условие.
Перегруженный каталог с сохранёнными из браузера страницами вида.
Downloads\СтенаВ древнем Китае было обнаружено_files\
Downloads\СтенаВ древнем Китае было обнаружено.html
И таких страниц и сохранений сотни тысяч. Всё в одном каталоге.
Задача.
Разбросать по каталогам с именами в виде [год_месяц] дат последнего файла(папки) в данном каталоге. При том самим новым папкам задать дату последнего файла (папки) в ней.

Помесячно нужно разделить перегруженный каталог.


Есть программы, батники и другие скрипты на эту тему. Но чтобы могли работать именно вот в такои плане с каталогами, я не встретил.

Иллюстрация

Задачу решил. Но не средствамми программировани я, а пользуясь фишками сторонних программ. Но всё же было бы интересно решить с помощью командного файла.

Автор: fractalzZz
Дата сообщения: 18.04.2016 21:59
nik4z

Цитата:
А просто выполни такой батник

Файлы получились различные, но единственное отличие - это то, что все пути в кавычках в выходном файле.


Цитата:
Возможно, это поможет.

Это не помогло - скорее всего там ошибка, так как в выходном файле неполные пути, а только каталоги из команды dir.

Автор: nik4z
Дата сообщения: 19.04.2016 04:54
fractalzZz

Цитата:
скорее всего там ошибка, так как в выходном файле неполные пути, а только каталоги из команды dir.


Странно, dir /b /a:-d должна искать только файлы, а не каталоги, попробуй просто ее выполнить, может не правильно что-то скопировал.
Автор: YuS_two
Дата сообщения: 19.04.2016 08:12
fractalzZz
Пошла вторая страница...
1. А Вы в какой кодировке filelist.txt храните?
2. Приведите здесь примеры имен файлов, которые пропускаются.
Автор: fractalzZz
Дата сообщения: 19.04.2016 16:33
nik4z
Там были не просто каталоги, а обрезанные пути до первого пробела (но даже так там видно тот же выхлоп, так как начало пути те же)

YuS_two
Файл в кодировке UTF-8, все пути корректны в файле. Файл просто список путей - каждый путь с новой строки без кавычек вокруг путей.

Один из примеров пути (x - любой символ латиницы или кириллицы):
g:\xxx\__xx\xxx\2015 - xxx\2. xxxx xûx.pdb (форум тут отображает û код вместо символа "u+^ сверху", но именно подобные символы и вызывают проблемы)
Автор: nik4z
Дата сообщения: 19.04.2016 16:51
fractalzZz

Цитата:
Файл в кодировке UTF-8

Так тогда надо ставить

Код: chcp 65001
Автор: fractalzZz
Дата сообщения: 19.04.2016 17:17
nik4z
Теперь похоже сработало. UTF-8, это чтобы сохранить все юникод символы в путях без изменений.
Автор: YuS_two
Дата сообщения: 19.04.2016 18:42
nik4z

Цитата:
А лучше, конверторнуть файл в oem, проблем меньше будет.

в OEM умляуты не сохранятся, эти символы в именах файлов тоже придется менять...
Автор: fractalzZz
Дата сообщения: 19.04.2016 19:57
Пара проблем при проверке - первый путь всегда пишется в выходной файл из-за наличия откуда-то перед самим путем (ещё перед буквой диска) какого-то невидимого символа юникод (исчезает после перекодировки файла в UTF-8). Выходной файл в кодировке ANSI и этот символ и вообще все символы, типа умляутов, отображаются наподобие "п>>и".

- Как сделать так, чтобы первый путь правильно обрабатывался ?
- И как сразу получить выходнйо файл в UTF-8, чтобы все символы правильно отображались и сохранились ?
Автор: YuS_two
Дата сообщения: 19.04.2016 21:03
[more] fractalzZz

Цитата:
ервый путь всегда пишется в выходной файл из-за наличия откуда-то перед самим путем (ещё перед буквой диска) какого-то невидимого символа юникод

Это к самим батникам относится слабо... сохраните исходный файл в формате UTF-8 без BOM (ссылки кликабельны ) и никаких дополнительных символов не будет, первая строка будет работать и т.д.. Либо не используйте первую строку для сохранения путей к файлам...


Цитата:
И как сразу получить выходнйо файл в UTF-8, чтобы все символы правильно отображались и сохранились ?

А почему Вы решили, что выходной файл не в UTF-8 ? Редактор может просто не распознавать кодировку автоматически...
Приведите полностью текст батника который Вы запускаете. [/more]
Автор: fractalzZz
Дата сообщения: 19.04.2016 21:56
YuS_two
В принципе в моём случае можно и не использовать первую строку, спасибо.

Батник:

Код: chcp 65001
del /f /q output1.txt
for /f "tokens=*" %%a in (input1.txt) do if NOT exist "%%~sa" echo.%%a>>output1.txt
Автор: YuS_two
Дата сообщения: 20.04.2016 02:58
fractalzZz

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

Можно сразу говорить уверенно - всё получится.
Автор: cafs
Дата сообщения: 20.04.2016 08:45
Нужен бат, который находит самый большой файл в папке C:\backup и выводит его размер.
Автор: nik4z
Дата сообщения: 20.04.2016 09:11
cafs

Цитата:
Нужен бат, который находит самый большой файл в папке C:\backup и выводит его размер.


Код: for /f "delims=" %%a in ('dir /a:-d /b /o:s') do set file=%%a & set size=%%~za
echo %file% %size%
Автор: Gosuto
Дата сообщения: 20.04.2016 09:38
Господа, тут попался батник (я в них не очень шарю), но, т.к. он работает исправно, нельзя ли в него добавить обратные действия? Т.е. он там добавляет сервис, в реестр пишет, драйвер добавляет, а потом запускает программу.
Так вот, нельзя ли в конец его добавить обратные действия, чтобы он ждал (желательно в скрытом режиме) окончания работы запускаемого им екзешника, а потом все возвращал к исходному состоянию (в реестре, службах, драйверах). Или отдельный батник для удаления чтоль, хз. Короче, вот исходник
[more]
Код: rem Search if installed
if exist %SystemRoot%\System32\drivers\fltsrv.sys goto installed
rem install servise and driver
PUSHD %~dp0
copy "%CD%\fltsrv.sys" %SystemRoot%\System32\drivers\fltsrv.sys /Y
sc.exe create fltsrv type= kernel start= boot binpath= "System32\DRIVERS\fltsrv.sys"
sc start fltsrv
copy "%CD%\snapman.sys" %SystemRoot%\System32\drivers\snapman.sys /Y
sc.exe create snapman type= kernel start= boot binpath= "System32\DRIVERS\snapman.sys"
sc start snapman
rem install license
reg add "HKLM\SOFTWARE\Acronis\TrueImage" /f /v "standard" /t REG_SZ /d "108 15 5 20 1 30103103120 4 25 17 99 23 31 17 25120 19 96 16 23 2 24 97 16120 25 18 12 17108 30108 3120 15 17 2109 30 96 20 29120 99109 2 6 20 97109 18120 4108 25 17 29 12 98 3120 6 23109 2 23 12103 25"
reg add "HKLM\SOFTWARE\Acronis\TrueImage\Settings" /f /v "WorkingDir" /t REG_SZ /d "%CD%"
rem install TIB browse
reg add "HKLM\SOFTWARE\Acronis\BackupAndRecovery\CommonComponents" /f /v "icu38.dll" /t REG_SZ /d "%CD%\icu38.dll"
reg add "HKLM\SOFTWARE\Acronis\BackupAndRecovery\CommonComponents" /f /v "resource.dll" /t REG_SZ /d "%CD%\resource.dll"
reg ADD "HKLM\SOFTWARE\Classes\.tib" /f /v "" /t REG_SZ /d "tibfile"
reg ADD "HKLM\SOFTWARE\Classes\tibfile" /f /v "" /t REG_SZ /d "Acronis Backup File"
reg ADD "HKLM\SOFTWARE\Classes\tibfile\CLSID" /f /v "" /t REG_SZ /d "{C539A15B-3AF9-4c92-B771-50CB78F5C751}"
reg ADD "HKLM\SOFTWARE\Classes\tibfile\DefaultIcon" /f /v "" /t REG_SZ /d "%CD%\tishell_abr.dll,0"
reg ADD "HKLM\SOFTWARE\Classes\tibfile\Shell\open\command" /f /v "" /t REG_SZ /d "explorer /idlist,%%I,%%L"
reg ADD "HKLM\SOFTWARE\Classes\tibfile\Shell\open\ddeexec" /f /v "NoActivateHandler" /t REG_SZ /d ""
reg ADD "HKLM\SOFTWARE\Classes\tibfile\Shell\open\ddeexec" /f /v "" /t REG_SZ /d "[ViewFolder(\"%%l\", %%I, %%S)]"
reg ADD "HKLM\SOFTWARE\Classes\tibfile\Shell\open\ddeexec\application" /f /v "" /t REG_SZ /d "Folders"
reg ADD "HKLM\SOFTWARE\Classes\tibfile\Shell\open\ddeexec\ifexec" /f /v "" /t REG_SZ /d "[]"
reg ADD "HKLM\SOFTWARE\Classes\tibfile\Shell\open\ddeexec\topic" /f /v "" /t REG_SZ /d "AppProperties"
reg ADD "HKLM\SOFTWARE\Classes\CLSID\{C539A15C-3AF9-4c92-B771-50CB78F5C751}" /f /v "" /t REG_SZ /d "Acronis True Image Shell Extension Backend"
reg ADD "HKLM\SOFTWARE\Classes\CLSID\{C539A15C-3AF9-4c92-B771-50CB78F5C751}" /f /v "AppID" /t REG_SZ /d "{C4E69DB9-E094-483e-B922-E7ADE65FB497}"
reg ADD "HKLM\SOFTWARE\Classes\CLSID\{C539A15C-3AF9-4c92-B771-50CB78F5C751}\InProcServer32" /f /v "ThreadingModel" /t REG_SZ /d "Apartment"
reg ADD "HKLM\SOFTWARE\Classes\CLSID\{C539A15C-3AF9-4c92-B771-50CB78F5C751}\InProcServer32" /f /v "" /t REG_SZ /d "%CD%\tishell32.dll"
reg ADD "HKLM\SOFTWARE\Classes\CLSID\{C539A15B-3AF9-4c92-B771-50CB78F5C751}\Implemented Categories\{00021490-0000-0000-C000-000000000046}" /f /v "" /t REG_SZ /d ""
reg ADD "HKLM\SOFTWARE\Classes\CLSID\{C539A15B-3AF9-4c92-B771-50CB78F5C751}\InProcServer32" /f /v "" /t REG_SZ /d "%CD%\tishell_abr.dll"
reg ADD "HKLM\SOFTWARE\Classes\CLSID\{C539A15B-3AF9-4c92-B771-50CB78F5C751}\InProcServer32" /f /v "ThreadingModel" /t REG_SZ /d "Apartment"
reg ADD "HKLM\SOFTWARE\Classes\CLSID\{C539A15B-3AF9-4c92-B771-50CB78F5C751}" /f /v "" /t REG_SZ /d "Acronis Backup and Recovery 11 Shell Extension"
reg ADD "HKLM\SOFTWARE\Classes\CLSID\{C539A15B-3AF9-4c92-B771-50CB78F5C751}\ShellFolder" /f /v "Attributes" /T REG_DWORD /D 2684354560
rem If installed, run directly
:installed
cd /d %~dp0
start TrueImage.exe
Автор: YuS_two
Дата сообщения: 20.04.2016 12:01
Gosuto

Цитата:
нельзя ли в него добавить обратные действия?

Можно. Надо только почитать встроенную справку по командам... например, для sc.exe - вместо параметра start, прописать stop, вместо create - delete и т.д.; вместо команды copy прописать del с путем и именем файла, который указан как целевой в copy, а для реестра: вместо reg add, прописать reg delete с поправками и уточнениями, и т.д..
Но это всё в общих чертах, лучше разобраться с каждой командой отдельно и посмотреть, так ли уж необходимо выполнять это обратное действие...
Кроме того, не факт, что то, что добавляется, уже не существовало до этой команды... ведь, проверка установки всего этого набора, выполняется по наличию всего лишь одного файла, в начале батника.

Но ковырять всё это - просто лень.
Автор: Vidockq
Дата сообщения: 23.04.2016 14:09
Подскажите батник для входа на сайт/форум/акк/почту ... с вводом пароля.
Можно создать такой батник или нет? какие есть нюансы?
Автор: shadow_member
Дата сообщения: 23.04.2016 14:42
Vidockq
Цитата:
какие есть нюансы?
Парольный менеджер, благо, их в достатке, и все портабельны, и пароль простым взглядом не увидишь.
Автор: Vidockq
Дата сообщения: 23.04.2016 19:59

Цитата:
Парольный менеджер

Не... это не наш путь
Опять же пароли... логины...
Хотелось бы на парочку сайтов сварганить ссылок (батников) для быстрого запуска.
Автор: Kakazabr
Дата сообщения: 27.04.2016 11:50
Здравствуйте, появилась задача написать скрипт powershell...

...кoтoрый в зaдaннoй пaпкe |"пaрaмeтр cкриптa"| и пoдпaпкaх ищeт фaйлы *.txt, и, ecли рaзмeр фaйлa бoльшe 200 Кб или дaтa пocлeднeгo измeнeния более 60 днeй, пeрeмeщaeт eгo в oтдeльную пaпку |"втoрoй пaрaмeтр cкриптa"|.
Cкрипт дoлжeн лoгирoвaть прoизвeдeнныe дeйcтвия в log.txt
Также при перемещении файлов необходимо обеспечить уникальность имен файлoв.
Автор: Victor33Man
Дата сообщения: 30.04.2016 23:57
Доброго времени суток!

Есть приложение, которое при завершении (Файл->Выход) закрывает свое окно но остается в памяти в виде процесса.
Конкретно речь идет о Hex Workshop - ftp://www.bpsoft.com/pub/hw_v680.exe

Выглядит это так:

1. Запускаем приложение HWorks32.exe и в диспетчере задач видим:
Приложение - Hex Workshop
Процесс - HWorks32.exe

2. Выходим из приложения и в диспетчере задач видим:
Приложения - нет (!)
Процесс - HWorks32.exe - остается в памяти!!!

Есть желание прибить этот процесс (это не проблема), но как обнаружить такую ситуацию?
Наверное, можно смотреть в AutoIT открытое окно, если оно закрывается - то убивать процесс...???
Что можно еще придумать, либо как конкретно реализовать в AutoIT, а то я буду долго с ним ковыряться.

Автор: YuS_two
Дата сообщения: 01.05.2016 05:36
Victor33Man

Цитата:
либо как конкретно реализовать в AutoIT

AutoIT это ведь не совсем батники и здесь это оффтопик...


Цитата:
Есть желание прибить этот процесс (это не проблема), но как обнаружить такую ситуацию?

Что значит обнаружить? Написать сценарий, где присутствует запуск программы, ожидание и если требуется, то и проверку наличия, и прибитие процесса можно организовать там же... в чем именно проблема?
Автор: Victor33Man
Дата сообщения: 01.05.2016 10:58

Цитата:
Что значит обнаружить? Написать сценарий, где присутствует запуск программы, ожидание и если требуется, то и проверку наличия, и прибитие процесса можно организовать там же

Так ожидание бесконечное - процесс то с этим именем не завершается! В этом и проблема.
==================================================
В общем ситуация следующая:
Программа запускает дочерний процесс, поэтому и не получалось дождаться завершения по имени.

Автор: YuS_two
Дата сообщения: 01.05.2016 13:12
Victor33Man

Цитата:
ожидание бесконечное - процесс то с этим именем не завершается!

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

Код:
:begin
...
tasklist /fi "windowtitle eq имя_окна" | findstr /C:"имя_окна" >nul
if not %errorlevel%==0 goto :proc
goto :begin

Страницы: 123456789101112131415161718

Предыдущая тема: Не устанавливаются обои на рабочий стол (Windows 2003 x64)


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