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

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

Автор: Elroir
Дата сообщения: 25.01.2008 00:29
Grim_Repo

Цитата:
удаляет скрытые и/или архивные и/или только для чтения файлы? И удаляет ли он файлы в скрытых папках?

Нет и да и нет. Да. (del /?)

Цитата:
Скажите, а что нужно для того чтоб юзер не смог закрыть окно батника (даже через диспетчер задач)?

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

P.S. Было бы не плохо, если бы ты, все-таки, почитал справку по командам и/или простейшие пояснения в интернете, по работе с командной строкой.
Автор: Dekabryi
Дата сообщения: 25.01.2008 04:45
PuzzleW

Задача была такова !
1) есть список компов которых нужно пропинговать и вследствии этого узнать кои из них живые ! Список 400 строк.
2) есть несколько решений ( ну на любителя )
а) FOR /F "eol=; tokens=1" %%i in (1.txt) do ping -n 1 %%i | find "TTL=" && echo %%i >> c:\temp\pinguetsya.txt ( работает быстро )
б) @echo on
setlocal
for /f %%i in (list.txt) do call:_ping %%i
goto:eof
:_ping
for /f "tokens=2 delims=[]" %%i in ('ping %1 ^| findstr %1') do (
echo %1 %%i 1>>list_after.txt && set flag=1
)
if not defined flag echo %1 is dead 1>list_after.txt
set flag= ( работает по медленние + выдает и iP машин )
3) Задача уже решенна , но я нашел еще способ выгрузить список компов в сети через net view >> new_list.txt а затем сравнить значения двух файлов.

Вот и всё !

Изложил по мой му понятно .
Автор: gamers_hater
Дата сообщения: 25.01.2008 07:02
Здрасте!
Есть куча файлов EX_ или DL_ в директории (i386)
Нужно написать батник со следующим алгоритмом:

1)найти следующий файл с расширением EX_ или DL_
2)если размер файла < 10 кб, переходим к пункту 1. (то-есть ищим следующий файл)
3)распаковать найденный файл во временный каталог (для распаковки использовать коммандную строку: "EXPAND -r имя_файла имя_папки")
4)упаковать файл с помощью UPX (ком. строка: "UPX -9 --force имя_файла")
5)упаковать файл в CAB (ком. строка: "MAKECAB имя_файла /L имя_папки")
6)заменить получившимся файлом тот файл, который мы нашли в пункте 1.
7)переходим к пункту 1.

Думаю, что объяснил более чем понятно.

Зарание спасибо!
Автор: 01MDM
Дата сообщения: 25.01.2008 07:59
Dekabryi

Цитата:
работает по медленние

Я сразу написал, что параметры ping можешь выставить на свое усмотрение.
Попробуй ping -n 1

И

Цитата:
if not defined flag echo %1 is dead 1>list_after.txt

1>>list_after.txt - у меня было так

С net view. Проверь, самому негде

Код:
@echo off
for /f "tokens=1 delims=\ " %%i in ('net view ^| findstr "\\"') do (
echo %%i 1>>new_list.tmp
)
for /f %%i in (list.txt) do (
findstr %%i new_list.tmp 1>nul 2>&1 && (
echo %%i 1>>new_list.txt) || (
echo %%i is unavailable 1>>new_list.txt
)
)
del new_list.tmp

Автор: Smitis
Дата сообщения: 25.01.2008 11:35
gamers_hater

Цитата:
Есть куча файлов EX_ или DL_ в директории (i386)
Нужно написать батник со следующим алгоритмом:

Если ты таким образом хочешь уменьшить размер винды после установки, то лучше не майся дурью. Ни к чему хорошему это не приведёт. Добрый совет, типа
Автор: gamers_hater
Дата сообщения: 25.01.2008 12:06
Smitis
эт смотря какие файлы сжимать, категорически нельзя: kernel32.dll, ntdll.dll, gdi32.dll, user32.dll ну и ещё парочку (т.к. 1) они отвечают за загрузку системы 2) их юзает сам UPX), а все остальное - можно, уже проверял, правда вручную - запарюсь их паковать =(

ЗЫ

вопрос остается в силе, единственная поправка - проверить, не яв-ся-ли файл одним из перечисленных выше.
Автор: SymA
Дата сообщения: 25.01.2008 13:04

Цитата:
SymA
я тоже не силен

ты имеешь в виду открыть папку в Windows Explorer'e?


Автор: OOD
Дата сообщения: 25.01.2008 13:08
Как добавить ключи в реестр с помощью батника?


Добавлено:
Спасибо вроде разобрался
start/wait regedit -s имя_файла.reg
Автор: Smitis
Дата сообщения: 25.01.2008 13:31
gamers_hater
dll-ки вообще сжимать не рекомендуется. Т.е. можно, но это приведёт к повышеному расходу памяти приложениями.
А цикл простой:

Код:
@echo off
for %%f in (*.dl_ *.ex_) do if %%~zf geq 10000 call :uuu "%%~f"
goto:eof

:uuu
echo %~1
:: Сдесь распаковываем/упаковываем
Автор: PashaV0607
Дата сообщения: 25.01.2008 15:08
Помогите пожалуйста!!!
есть такая проблема, нужно проверить есть ли папка в каталоге. Название папки меняется ежедневно.

необходимо проверить есть ли папка ХХХХ в каталоге с:\ttt\ и если есть делать какие то действия.


конкретнее если есть папка ХХХХ в каталоге с:\ttt\ то делаем ее копию в другое место.

Спасибо заранее!!!
Автор: 01MDM
Дата сообщения: 25.01.2008 17:32

Цитата:

Название папки меняется ежедневно.
необходимо проверить есть ли папка ХХХХ в каталоге с:\ttt\

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

Код:
@echo off
setlocal
for /d %%i in ("C:\ttt\*") do set "folder=%%~nxi"
if defined folder (
    md "C:\Path\%folder%"
    xcopy /e "C:\ttt\%folder%" "C:\Path\%folder%\"
)
Автор: king_stiven
Дата сообщения: 25.01.2008 18:35
PashaV0607
01MDM

можно и сразу, то есть без создания set "folder=%%~nxi"


Код: for /d %%i in ("C:\ttt\*") do xcopy "%%i" "куда копируем"
Автор: 01MDM
Дата сообщения: 25.01.2008 18:58
king_stiven
Можно просто, если в ttt нет файлов

Код:
xcopy /e C:\ttt "куда надо\"
Автор: king_stiven
Дата сообщения: 25.01.2008 19:43
01MDM

А в задаче не сказано. что нужно создавать папку
А если и надо, то

Код: for /d %%i in ("C:\ttt\*") do xcopy "%%i" "C:\Path\%%~ni\" /i /e
Автор: 01MDM
Дата сообщения: 25.01.2008 20:29
king_stiven
Я не подумал, что xcopy сама создаст папку, почти не пользуюсь
Автор: gamers_hater
Дата сообщения: 26.01.2008 10:30
Smitis
спасибо!


Цитата:
:: Сдесь распаковываем/упаковываем

тут вопрос.
Например, распакованный (из CAB) файл имеет уже расширение не EX_, а EXE, как мне получить его имя, чтоб передать в параметр UPX'у?
Автор: AndryG
Дата сообщения: 26.01.2008 10:42
Доброго времени суток.
Затык с ARJ32.exe
Нужно батником раскрывать архивы ... и не могу избавится от вопросов архиватора при выполнении.

В справке нашел как забить только ответ ДА
(ключ -jyo -- "Переписать файл? -> ДА")
А вот с "Путь не существует, создать папку?" надо отвечать "ВЫХОД"

Вроде сделал, но так коряво:

type %~dp0util\reply_q|arj32.exe e -jyo n:\nbu\appl\rcukru.arj rcukru.dbf -ht%new_stat_dir%\kod_form\

В файле Q и "Enter"

А хочется красивое решение Подскажите, пжлст, с ключами архиватора, пжлст

Автор: MsdLamer
Дата сообщения: 26.01.2008 10:42
Здравствуйте мастера. Помогите с проблемкой... У меня на работе на компе лежит база которую надо копировать раз в день.... я написал батничек и вот что получилось.

set d=%date:~0,2%
set m=%date:~3,2%
set y=%date:~6,4%
MD C:\Archive_TDSM\
MD C:\Archive_TDSM\Archive_TDSM_%date%
XCOPY/E /C "C:\TDSM\*.*" "C:\Archive_TDSM\Archive_TDSM_%date%"


я не профи так что это может показаться глупо..... но работает же....

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

СПАСИБО.
Автор: Maza Faka
Дата сообщения: 26.01.2008 11:03
MsdLamer
Ищи в версии для печати forfiles, есть много примеров.
Автор: AndryG
Дата сообщения: 26.01.2008 11:59
Накропал парочку файликов -- даете дату - получаете номер дня и вторая наоборот - укаываете в параметре номер дня - получаете дату.

http://andryg.ho.com.ua/contents/test/addons/date_num.r_a_r - архив
http://andryg.ho.com.ua/index.php?p=_klad - страничка

Думаю, что зная номер дня архива .. дальше можно сравнить номер дня архива и текущей дату ... и принять решение
Автор: dFine2K2K
Дата сообщения: 26.01.2008 12:06
Нужна помощь в написании bat-файла.

Задача в том, чтобы получить
- версию NT (например, 6.0.6000)
- битность ОС (x86 или x64)
- язык системы (например, En-EN)
Насколько я понял, это можно сделать обработкой результатов команды SYSTEMINFO при помощи FOR. Подскажите, как это логичнее, правильнее сделать? (Плохо понимаю синтаксис команды FOR по обработке подстрок).
Как обеспечить работоспособность полученного bat-файла на любой машине?

P.S. Существует ли иной способ помимо SYSTEMINFO+FOR для подобных целей?
Спасибо!
Автор: 01MDM
Дата сообщения: 26.01.2008 13:52
dFine2K2K

Цитата:
Насколько я понял, это можно сделать обработкой результатов команды SYSTEMINFO

Конечно можно, но не на всех OS (например на XP Home нельзя), к тому же для разных языков эта команда делает разный вывод, и может не сработать сортировка по значению.

Такой вариант устроит?

Код:
@echo off
for /f "tokens=1,2 delims==" %%i in ('netsh diag show computer /v') do (
    echo %%i | findstr "SystemType" 1>nul && echo %%i: %%j
)
for /f "tokens=1,2 delims==" %%i in ('netsh diag show os /v') do (
    echo %%i | findstr "\<Description" 1>nul && echo %%i: %%j
    echo %%i | findstr "\<Version" 1>nul && echo %%i: %%j
    echo %%i | findstr "BuildNumber" 1>nul && echo %%i: %%j
    echo %%i | findstr "BuildType" 1>nul && echo %%i: %%j
    echo %%i | findstr "CSDVersion\>" 1>nul && echo %%i: %%j
    echo %%i | findstr "Locale" 1>nul && echo %%i: %%j
    echo %%i | findstr "OSLanguage" 1>nul && echo %%i: %%j
)
Автор: Smitis
Дата сообщения: 26.01.2008 14:05
gamers_hater

Цитата:
тут вопрос.
Например, распакованный (из CAB) файл имеет уже расширение не EX_, а EXE, как мне получить его имя, чтоб передать в параметр UPX'у?



Код:
@echo off
for %%f in (*.dl_ *.ex_) do if %%~zf geq 10000 call :uuu "%%~f"
goto:eof

:uuu
echo %~1

:: Имя
set fn=%~n1
:: Имя и расширение
set fnx=%~nx1

:: Сдесь распаковываем/упаковываем
Автор: dFine2K2K
Дата сообщения: 26.01.2008 14:17
01MDM


Цитата:

@echo off
for /f "tokens=1,2 delims==" %%i in ('netsh diag show computer /v') do (
echo %%i | findstr "SystemType" 1>nul && echo %%i: %%j
)
for /f "tokens=1,2 delims==" %%i in ('netsh diag show os /v') do (
echo %%i | findstr "\<Description" 1>nul && echo %%i: %%j
echo %%i | findstr "\<Version" 1>nul && echo %%i: %%j
echo %%i | findstr "BuildNumber" 1>nul && echo %%i: %%j
echo %%i | findstr "BuildType" 1>nul && echo %%i: %%j
echo %%i | findstr "CSDVersion\>" 1>nul && echo %%i: %%j
echo %%i | findstr "Locale" 1>nul && echo %%i: %%j
echo %%i | findstr "OSLanguage" 1>nul && echo %%i: %%j
)


Сохранил в bat-файл (убрав пробелы), запустил, безрезультатно.
На всякий случай решил проверить вывод команд netsh diag show computer /v и netsh diag show os /v. NETSH сказала мне, что команды DIAG не существует.

Пробовал на Vista Ultimate x64 (RU) и Windows 2000 Pro (RU).

01MDM, немного не по теме моего вопроса. Подскажи пожалуйста, где в следующем коде я совершил ошибку? Хотел я получить "ответы в столбик", убрав кавычки.


Код:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET TXTDATA=
FOR /F "delims=," %%i IN ('systeminfo /FO CSV /NH') DO (
    SET TXTDATA=%%i
    echo !TXTDATA:~1,-1!
)
Автор: MsdLamer
Дата сообщения: 26.01.2008 14:38
Здравствуйте мастера. Помогите с проблемкой... У меня на работе на компе лежит база которую надо копировать раз в день.... я написал батничек и вот что получилось.

set d=%date:~0,2%
set m=%date:~3,2%
set y=%date:~6,4%
MD C:\Archive_TDSM\
MD C:\Archive_TDSM\Archive_TDSM_%date%
XCOPY/E /C "C:\TDSM\*.*" "C:\Archive_TDSM\Archive_TDSM_%date%"


я не профи так что это может показаться глупо..... но работает же....

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



помогите кто нибудь сам я не поиму...
СПАСИБО.
Автор: Elroir
Дата сообщения: 26.01.2008 15:19
MsdLamer
Попробуй так:

Код:
@echo off
for /f "skip=3 tokens=*" %%a in ('dir /ad /o-d /b') do echo rd /q /s "%%a"
Автор: MsdLamer
Дата сообщения: 26.01.2008 15:35
спасибо Работает и еще вопросик, а файлик обязательно должен лежать в этой директории? можно ли запускать его от куда нибудь из другого места? Подскажите...
Автор: Elroir
Дата сообщения: 26.01.2008 15:39
MsdLamer

Цитата:
а файлик обязательно должен лежать в этой директории? можно ли запускать его от куда нибудь из другого места?


Код:
@echo off
for /f "skip=3 tokens=*" %%a in ('dir c:\backup /ad /o-d /b') do rd /q /s "%%a"
Автор: MsdLamer
Дата сообщения: 26.01.2008 16:18
пишет C:\........>rd /q /s "Archive_TDSM_21.01.08"
не удается найти указанный файл.... Что это? И не удаляет.

Добавлено:
все разобрался спасибо..... это я не внимателен.
Автор: 01MDM
Дата сообщения: 26.01.2008 17:54
dFine2K2K

Цитата:
NETSH сказала мне, что команды DIAG не существует.

Не знал, думал что контексты netsh везде одинаковые.

Цитата:
Подскажи пожалуйста, где в следующем коде я совершил ошибку? Хотел я получить "ответы в столбик", убрав кавычки.

Ты указал разделители (delims=,) но не указал какие по порядку части выводить (tokens). Поэтому выводится только первая (%%i). В данном случае конечно можно переделать твой пример, но при этом будет перезапускаться цикл и systeminfo, что очень долго. Из системинфо надо брать только то, что нужно.





Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

Предыдущая тема: Доступ к реестру через RegEdit?


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