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

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

Автор: FXPELIVE
Дата сообщения: 15.03.2007 19:12
Помогите доработать мой пакетник Оптимизировать ХРюшку.bat(под Windows XP SP2):

Код: @echo off
color f0
title ...
echo Оптимизация системы...

echo дефрагментация диска...
echo C:
defrag C: -v >nul
echo D:
defrag D: -v >nul

echo для ускорения загрузки Windows и запуска самой активной части приложений
%windir%\system32\Rundll32.exe advapi32.dll,ProcessIdleTasks

echo удаление выборок
del /f /q /s "C:\WINDOWS\Prefetch\*.*"

pause
Автор: ElCoyote
Дата сообщения: 15.03.2007 21:54
Привет.
У меня на компах при входе в учетную запись срабатывает bat-файл из автозагрузки, он делает архивную копию файлов. Так вот, когда юзеры заходят в свою учетную запись, выскакивает консольное окошко, а это !@#ные юзеры сразу тыкают на крестик! Соответственно копирования не происходит.
Как можно скрыть работу таких пакетных файлов?
Где-то прочитал, что можно сделать так:
my_file.bat>NULL
Но так создается файл NULL, куда пишется вся инфа о работе пакетника...
Автор: Elroir
Дата сообщения: 15.03.2007 22:55
ElCoyote

Цитата:
Где-то прочитал, что можно сделать так: my_file.bat>NULL

Это не поможет - ">NUL" скрывает вывод текста, но не само окно.
Посмотри cmdow — изменение параметров и видимости дос-окна (шапка->Полезные ссылки).

Tipulatoid

Цитата:
Крутой код

Спасибо!
Автор: Tipulatoid
Дата сообщения: 15.03.2007 23:23
FXPELIVE
А не проще ли использовать Службу расписаний? Наберите at /? для справки.
Автор: Desark
Дата сообщения: 16.03.2007 08:45
Здравствуйте, мне нужен bat который бы архивировал файлы (*10.002; *.*; в зависимости как настроишь, но пропуска *.arj) в архив [дата на момент создания].arj и удалял исходные, архив должен быть в тойже папке. Заранее спасибо.
ЗЫ: подскажите где можно найти команды и листинг по написанию bat - ов, в формате для печати.
Автор: GORA2
Дата сообщения: 16.03.2007 11:43
Подскажите, как решить такую задачу. Нужно в текстовый файл (KOI-8) вставить в определенное место необходимый текст с помощью батника. Делаю так:
Код: for /f "eol=c tokens=1 usebackq delims=|" %%i in ("%~1") do (
IF "%%i"==";!@InstallEnd@!" echo ;This is "My text">>config.txt
echo %%i>>config.txt
)
Автор: KapralBel
Дата сообщения: 16.03.2007 12:57
Desark
По ARJ
ARJ m Archive_ *.* -x*.arj -h#

По батничкам
именно эта тема и её шапка
Автор: igor_andreev
Дата сообщения: 16.03.2007 13:13
GORA2

Цитата:
Это работает, но:
1 Удаляет все пустые строки имеющиеся в исходном файле
2 Если в исходном файле имеются спец. символы (0CH, например), то они заменяются незнамо чем

А VBScript учите, пригодится... (С) Кузьмич, "Особенности национальной рыбалки"
Автор: KapralBel
Дата сообщения: 16.03.2007 13:43
GORA2
Добавлю к igor_andreev или PowerShell
Автор: Desark
Дата сообщения: 16.03.2007 14:26
спс все работает.
Единственное, скоппировал в туже папку "ARJ.EXE", без него работать не хотел и добавил пути.
ARJ m Archive_ с:\temp\*.* -x*.arj -h#
move *.arj c:\temp\
Автор: KapralBel
Дата сообщения: 16.03.2007 14:38
Desark
Добавь ARJ в папку которая находится в переменной Path
Автор: GORA2
Дата сообщения: 16.03.2007 15:32
igor_andreev
KapralBel
А ветка как называется? А?
Лозунги нашего вождя "Учиться, учиться..." мне известны, а по существу вопроса, что то можете сказать?
Автор: KapralBel
Дата сообщения: 16.03.2007 15:49
GORA2
Поверь
не все можно сделать на батничках
или скажем так
То что решается на VBS и PowerShell за 2-3 минуты и в 5 строк
то на батничках надо затратить кучу времени и с особыми хитростями (сторонними программами)
Так что надо для каждой задачи выбирать соответсвующий инструмент
Автор: Maza Faka
Дата сообщения: 16.03.2007 15:54
Desark
Запоздало, но всё таки...Написал, как смог , в общем копируешь код в батник, батник называешь, скажем "ARJCMD.bat", кидаешь этот батник и консольную версию ARJ.exe в папку с файлами, которые нужно архивировать, имена архивов будут такие "16032007" и т.д. по дате вобщем


Код:
@Echo off
Set dat=%date:.=%
Dir /b | Find /i /v "arj" >> arjtmp.txt
For /F %%i in (arjtmp.txt) do (
Arj.exe a -e %dat% %%i
Del /q /f %%i)
Del /q arjtmp.txt
Автор: igor_andreev
Дата сообщения: 16.03.2007 16:09

Цитата:
по существу вопроса, что то можете сказать?
Команда FOR никак не воспринимает пустые строки при чтении построчно текстовых файлов, это общеизвестно.

Спецсимволы - тут тоже тяжко бывает иногда , все таки язык бат-файлов это не полноценный язык программирования, он изначально задумывался(шут знает когда, винды тогда точно еще не было) больше как доступное всем средство автоматизации(запуск программ и т.п.), но уж точно не как способ для любого сложного разбора текста.

То, что народ изгаляется и придумывает всякие фокусы с батниками - это обусловлено доступность написания батников, ваяешь себе в блокноте, не надо никаких компиляторов и тп. и тем, что воспроизвести можно на практически любой версии Windows. Ограничения командных файлов Microsoft ессно известны и поэтому появились vbscript и powershell. Думаешь программисты у Билла Гейтса - страдающие от безделья дурачки и встроили vbscript в ОС просто так, времени свободного много, делать все-равно нефих...? Неа, эт язык уже более высокого уровня.

Добавлено:
Maza Faka

Цитата:
Set dat=%date:.=%

Да это в общем то не нужно, arj32 сам хорошо добавляет к имени архива дату-время как пользователю надо. Есть у него ключи для этого(аналог -ag у WinRAR), см. пример KapralBel
Цитата:
h#: append date string to name
h#1: append time string to name
h#2: append DHHMMSS to name

Можно любые конструкции использовать, типа -h#_YYYY-DD-MM_hh-mm-ss



Добавлено:
Хотя нее, не любые Сейчас попробовал, arj 3.10 с arj.sourceforge.net спокойно проглотил -h#_YYYY-DD-MM_hh-mm-ss, а "оригинальный" arj 3.14 взбрыкнул - Invalid swith. А в arj для DOS этого ключа -h# кажется вообще нет(ну он, 16-битный и не нужен под виндой)
Автор: Maza Faka
Дата сообщения: 16.03.2007 16:54
KapralBel
По поводу PowerShell, можешь дать ссылки, где почитать, что это такое?
Автор: KapralBel
Дата сообщения: 16.03.2007 17:04
Maza Faka
Тут же на форуме
PowerShell

Добавлено:
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx

Добавлено:
http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx
Автор: JohnRD
Дата сообщения: 17.03.2007 11:58
добрый день всем

подскажите пожалуйста
1.cmd

Код: del /q c:\1\a.txt
Автор: igor_andreev
Дата сообщения: 17.03.2007 12:04
JohnRD
if exist "c:\1\a.txt" del /q "c:\1\a.txt"
Автор: Kirillhome
Дата сообщения: 17.03.2007 12:06
JohnRD
IF EXIST c:\1\a.txt (del /q c:\1\a.txt)
Автор: JohnRD
Дата сообщения: 17.03.2007 16:30
igor_andreev Kirillhome
круто даже не ожидал что так просто
спасибо

вот еще задача которая мешает мне спать..
есть файл с номерами лицензий
lic.csv

Код: 1111
2222
3333
4444
5555
6666
Автор: Elroir
Дата сообщения: 17.03.2007 20:05
JohnRD
Вот так должно сработать:

Код:
@echo off
if exist name-lic.bak del /q name-lic.bak
copy name-lic.csv name-lic.bak>nul
setlocal enabledelayedexpansion
for /f "tokens=1" %%a in (lic.csv) do (
del /q tmp_lic 2>nul
find "%%a" name-lic.csv>nul
if !errorlevel!==0 (
set "first_occurrence=yes"
for /f "tokens=1,2 delims=; " %%b in (name-lic.csv) do (
if %%c==%%a (
if !first_occurrence!==yes (
set "first_occurrence=no"
echo %%b;%%c>>tmp_lic
) else (
echo %%b;0000>>tmp_lic
)
) else (
echo %%b;%%c>>tmp_lic
)
)
) else (
set "changed=no"
for /f "tokens=1,2 delims=; " %%b in (name-lic.csv) do (
if %%c==0000 (
if !changed!==no (
set "changed=yes"
echo %%b;%%a>>tmp_lic
) else (
echo %%b;%%c>>tmp_lic
)
) else (echo %%b;%%c>>tmp_lic)
)
)
del /q name-lic.csv
ren tmp_lic name-lic.csv
)
Автор: Kirillhome
Дата сообщения: 17.03.2007 20:06
JohnRD
А насколько уникальный номера лицензий (т.е. может ли содержать файл lic.csv строки, к примеру, 1111 и 11111 ????)
Автор: JohnRD
Дата сообщения: 18.03.2007 11:05
Elroir спасибо большое, буду проверять

Kirillhome
вот реальные лицензии, убраны пробелы для импорта в реестр
в таком виде они будут в файле lic.csv
DV3000000000UNFB0C9PBLLDL
DV3000000000B91B65C6CMZKH
DV3000000000ADHAM9AXKT6EV
DV300000000002FCAARENAK8D
DV3000000000LWB78XCHTQQ1V
DV3000000000G4NPEQ8KA3G9U

DV3000001000000005YHDZZVR - это временный номер
Автор: andy13nemo
Дата сообщения: 18.03.2007 15:14
Подскажите пожалуйста скрипт для автоматического создания папок на диске следующим образом:

Папка-1
Папка-2
Папка-3
Папка-...
и т.д.

Заранее благодарю !
Автор: Elroir
Дата сообщения: 18.03.2007 16:14
andy13nemo

Код:
@echo off
setlocal
chcp 1251>nul
set "number=10"
for /l %%a in (1,1,%number%) do md "Папка-%%a"
Автор: ssnvit
Дата сообщения: 19.03.2007 13:14
Постановка задачи: источник - папки test1, test2, .... testn. В этих папках размещены файлы job1.txt,job2.txt,....jobm.txt. Необходимо скопировать папки test1 и т.д. в другое место на разделе диска с теми же названиями папок, но исключив из копирования те файлы *.txt, которые уже имеются в папках назначения. Те из файлов *.txt, имен которых нет в папках назначения, должны быть скопированы.
Автор: KapralBel
Дата сообщения: 19.03.2007 13:32
ssnvit
См. в сторону встроенной утилиты XCopy или RoboCopy от M$
Позволяют делать зеркало папок
XCopy - встроенная и простая
RoboCopy - надо качать но зато очень мощная
Автор: MegaSin
Дата сообщения: 19.03.2007 15:52
приветствую!
Есть такая вот конструкция(просто для теста):

Код:
@echo off
set mdquery=123 -h 12 --port=32 -u12 --password=32
call :xz "%mdquery% -e "SELECT `name`,(SUBSTRING_INDEX(SUBSTRING_INDEX(`data`, ' ', 1177), ' ', -1)+0) AS `money`""
pause
goto :eof
:xz
echo %~1
exit /b 0
:eof
Автор: igor_andreev
Дата сообщения: 19.03.2007 16:00
MegaSin
echo %*

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Сбой активации XP sp2


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