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

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

Автор: Victor33Man
Дата сообщения: 01.05.2016 14:56
[more] [more]Т.к. не могу длинные сообщения постить...[/more]
YuS_twoYuS_two

Спасибо!

Так работает:

Код:
@echo off

Start Hworks32.exe

:begin

tasklist /fi "windowtitle eq Hex Workshop" | findstr /C:"HWorks32.exe" >nul
if not %errorlevel%==0 goto :begin

:begin2
tasklist /fi "windowtitle eq Hex Workshop" | findstr /C:"HWorks32.exe" >nul
if not %errorlevel%==0 goto :next
goto :begin2

:next
tasklist /fi "imagename eq HWorks32.exe" | findstr /C:"HWorks32.exe" >nul
if %errorlevel%==0 taskkill /IM HWorks32.exe /T /F
Автор: Nuke142
Дата сообщения: 04.05.2016 14:43
Привет!
Нужно разрешить исполнение кода только для определенных имён пользователей (т.е., под каким логином сейчас пользователь)
Написал:
if %username% == Ivanov goto next
if %username% == Petrov goto next
if %username% == Sidorov goto next
:next
echo "hello world"

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

Спасибо.
Автор: Pasha_ZZZ
Дата сообщения: 04.05.2016 15:06
Nuke142
Ну например
Цитата:
echo./Inavov/Petrov/Sidorov/|find /i "/%USERNAME%/"
if errorlevel 1 goto :eof
.....<нужный_код>......
Автор: Nuke142
Дата сообщения: 05.05.2016 08:42
Pasha_ZZZ
Спасибо!!

--
Есть еще задача, последняя. Помогите определить, в чем проблема.

Есть код, к примеру:

Код:
@echo off
setlocal enabledelayedexpansion
set /p hours=Введите часы:
set /p mins=Введите минуты:
:start
FOR /F "usebackq tokens=1,2* delims=:" %%a IN ('!time!') DO (
set h=%%a
set m=%%b
)
if !hours!==!h! (
if !mins!==!m! (
start iexplore.exe "http://yandex.ru"
goto :end
)
)
timeout /t 5 /NOBREAK>nul
goto :start
:end
exit
Автор: Pasha_ZZZ
Дата сообщения: 05.05.2016 08:55
Nuke142
Цитата:
Пробовал вводить и "8", и "08"
А надо " 8" (с пробелом)
Автор: nik4z
Дата сообщения: 05.05.2016 09:10
Nuke142
А зачем так сложно ?

Код: @echo off
set /p hours=Введите часы:
set /p mins=Введите минуты:
set /a tm=%hours% * 60 + %mins%
:start
FOR /F "usebackq tokens=1,2* delims=:" %%a IN ('%time%') DO set /a tm1=%%a * 60 + %%b
if not %tm%==%tm1% goto :next
start iexplore.exe "http://yandex.ru"
goto :eof
:next
timeout /t 5 /NOBREAK>nul
goto :start
Автор: YuS_two
Дата сообщения: 05.05.2016 09:41
Nuke142

Цитата:
В чем может быть дело?

Как сказал выше Pasha_ZZZ:
либо вводить так:

Цитата:
надо " 8" (с пробелом)

или добавить пробел в разделители, так:

Код: ...
FOR /F "usebackq tokens=1,2* delims=: " %%a IN ('!time!') DO (
...
Автор: VidelSamogO
Дата сообщения: 10.05.2016 12:02
Как заблокировать доступ к изменению *.exe в подкаталогах?


Цитата:



Код: for /r %1 %%i in (*.exe) do (
Attrib +R "%%i"
echo y|cacls.exe %1 /C /G Администратор:C Все:C System:C
echo y|cacls.exe "%%i" /C /G Администратор:R Все:R System:R

)
pause>nul


Автор: hErAux
Дата сообщения: 10.05.2016 13:01
VidelSamogO
вы справку по cacls/? читали?

Цитата:
ПРИМЕЧАНИЕ. CACLS считается устаревшей, рекомендуется использовать ICACLS.
Автор: VidelSamogO
Дата сообщения: 10.05.2016 13:13

Цитата:
вы справку по cacls/? читали?


Я работаю в XP. C одиночными каталогами у меня уже 30 лет на сервере всё работает. Справку то я читал. По существу вы стркутуру батника не можете изменить, чтобы работала? Так зачем воздух тогда сотрясать?
Автор: Inoz2000
Дата сообщения: 10.05.2016 13:58
VidelSamogO
Чтобы от вас - тихонь добиться, что
Цитата:
Я работаю в XP
сами же вы с первого раза не считаете нужным помочь другим в помощи себе.
Цитата:
Как заблокировать доступ
заблокировать кому?
Автор: VidelSamogO
Дата сообщения: 10.05.2016 18:13

Цитата:
заблокировать кому?

Файловому вирусу. Который кто то упорно заносит в сетку. Или с чьего то компа приходит. Антивирус его не блокирует.
Вот такой батник у меня работает для отдельных каталогов.


Код: cacls.exe %1 /C /G Администратор:C Все:C System:C
cacls.exe %1\*.exe /C /G Администратор:R Все:R System:R
Автор: Inoz2000
Дата сообщения: 10.05.2016 19:58
VidelSamogO
если не вдаваться в подробности синтаксиса команды cacls, то я бы вынес строку

Код: echo y|cacls.exe %1 /C /G Администратор:C Все:C System:C
Автор: VidelSamogO
Дата сообщения: 10.05.2016 23:30

Цитата:
и так работает

В подкаталогах не блокирует от переименования
Пытаюсь с использованием forfiles. Но это несколько непрофессионально.

Цитата:
не писал бы русские слова, а то бывают проблемы с кодировками

Что поделаешь? Эта команда в русской винде только с русскими словами выполняется. Это я в ansi из ascii само собой сконвертировал.

Цитата:
то я бы вынес строку
echo y|cacls.exe %1 /C /G Администратор:C Все:C System:C
из цикла.

Тогда не будет задаваться предварительная маска на атрибуты каталога, в котором находятся файлы. Мне то нужно задать права и на смену дат каталогов. понятно, что там не %1 нужен, а переменная, описывающая пути подкаталогов. Но какая должна быть эта переменная, я пока что не выяснил.
Автор: Pasha_ZZZ
Дата сообщения: 11.05.2016 00:05
VidelSamogO
Цитата:
Теперь лишь надо настроить его на рекурсивность.

Цитата:
for /r %1 %%i in (.) do ......
- рекурсивное получение дерева каталогов
Автор: VidelSamogO
Дата сообщения: 11.05.2016 00:18

Цитата:
- рекурсивное получение дерева каталогов

А какая должна стоять переменная в первой calcs вместо %1?
Автор: Pasha_ZZZ
Дата сообщения: 11.05.2016 07:10
VidelSamogO
Код: cacls.exe %%i /C /G Администратор:C Все:C System:C
cacls.exe %%i\*.exe /C /G Администратор:R Все:R System:R
Автор: Vepel
Дата сообщения: 11.05.2016 14:30
Если вдруг кто-то будет искать Bat для подключения диска по WebDAV

Сохранять в OEM 866

@echo off

set "user=webtest"
set "passwd=Password"
set "site=webdav.yoursite.net"
set "port=4443"
set "letter=w:"
set "Label=Общий Диск"
set "UNC=\\%site%@SSL@%port%\DavWWWRoot"


cmdkey /delete:%site%
cmdkey /add:%site% /user:%site%\%user% /pass:%passwd%
Net Use %letter% /delete
Net Use %letter% %UNC% /USER:%user% %passwd%
Reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\%UNC:\=#%" /f
Reg Add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\%UNC:\=#%" /v _LabelFromReg /d "%Label%" /f
Автор: VidelSamogO
Дата сообщения: 11.05.2016 18:26

Цитата:
Ну или тот код в неизменном виде засунуть в процедуру

Интересно. Я так вроде пробовал. Но сейчас на всякий случай проверю. Спасибо за помощь.

Нет. Так почему то не хочет обрабатывать.


Код: for /r %1 %%i in (*.*) do (
echo %%~pi
)
pause
Автор: mrsimpson
Дата сообщения: 12.05.2016 05:25
Объясните, пожалуйста, про вывод результатов в файл. Допустим, я запускаю питоновский скрипт, здесь ping совершенно условен, там будут другие параметры:

Код: c:\script.py --ping google.com
Автор: Pasha_ZZZ
Дата сообщения: 12.05.2016 06:17
mrsimpson
Надо вывести в питоновском скрипте то, что нужно. Допустим
Цитата:
import sys
print str(sys.argv)
выведет все аргументы, включая имя скрипта. Только в квадратных скобках и с апострофами. Если нужен вывод в другом виде - нужно, допустим, собрать командную строку в цикле из отдельных аргументов. Кол-во аргументов комстроки
Цитата:
len(sys.argv)
а имя скрипта
Цитата:
sys.argv[0]


Добавлено:
VidelSamogO
Цитата:
в конце %%~pi появляется слэш
А зачем было указывать %%~pi, когда можно было просто %%i? Ну да, там в конце точка. Но точка - это текущий каталог, поэтому, например, можно не избавляться от концевого слеша. Идентичны, например, пути:
Цитата:
C:\Test
C:\Test\.
C:\Test\.\.
и так далее, можно продолжить самостоятельно
Автор: mrsimpson
Дата сообщения: 12.05.2016 06:31
Pasha_ZZZ
Нет-нет, изменять я скрипт не буду. Мне надо вообще, как вывести всю командную строку. Путь это будет не питоновский скрипт, а та же стандартная утилита ping от Microsoft. Каким образом мне эту команду
Код: c:\Users\Admin>ping google.com > result.txt
Автор: ipmanyak
Дата сообщения: 12.05.2016 07:04
mrsimpson сделай батник, в батнике

Код:
echo "ping 173.194.113.199 -n 4 > result.txt" > result.txt
ping 173.194.113.199 -n 4 >> result.txt
Автор: morkovni
Дата сообщения: 13.05.2016 12:07
Помогите пожалуйста решить следующую проблему:
Есть локальный компьютер (Windows 7x64), в нем открываю cmd.exe, проверяю кодировку: chcp - 866
Проблем в работе с папками с названием на кириллице нет.
Подключаюсь к cmd.exe удаленного сетевого компьютера (пробовал и W7 и XP) через psexec.exe,
проверяю кодировку: chcp - 866.
И тут возникают проблемы в работе с папками и файлами с названием на кириллице (и W7 и XP):
dir d:
Содержимое папки D:\

................ <DIR> Новая папка
................ <DIR> docs

ввожу команду cd /d d:\Новая папка
получаю:
cd /d d:\{КРАКОЗЯБРЫ}
"Синтаксическая ошибка в имени файла, имени папки или метке тома

Декодер https://www.artlebedev.ru/tools/decoder/advanced/ определил кодировку следующим образом:
ISO-8859-5 --> KOI8-U + KOI8-R --> 7-bit ASCII

Подскажите, как исправить?
Автор: Vidockq
Дата сообщения: 14.05.2016 10:23
Подскажите батник для копирования по уникальной информации о флешке.
Спасибо.
Автор: VitaminP
Дата сообщения: 14.05.2016 11:13
Vidockq
У меня так это происходит:

@echo off
set test=Papka
for %%a in (F G H I J K L M N O P Q R S T U) do if exist "%%a:\%test%" set DISK=%%a
if "%DISK%"=="" echo Устройство не найдено && ping -n 3 localhost > nul && goto eof
:: Далее команды копирования/синхронизации

В корне папки должен лежать идентификационный файл или папка (Papka). Если скрипт найдёт диск с правильным идентификатором, то выполнит последующие команды.
Автор: Barragan
Дата сообщения: 17.05.2016 12:20
Помогите написать скрипт, автоматизирующий действия с программой)

Дано - reshacker.exe, с помощью которого можно посмотреть все ресурсы внутри файлов.
Дана папка, где находятся все ресурсные файлы с разными расширениями.

Ресхакеру подаётся команда для каждого файла:
"C:\Program Files (x86)\Resource Hacker\ResourceHacker.exe" -extract "C:\temp\explorer.exe", "C:\temp\explorer.exe\explorer.exe.rc", ,,

моя задача - упростить это дело. Скрипт будет:
а) подставлять в команду названия файлов
б) подставлять название файла (с расширением) в качестве названия файла выхода, типа explorer.exe.rc
в) создавать новую папку для каждого файла, типа c:\temp\explorer.exe\, куда складируется всё нажитое добро.
Выполнив эту задачу, я постараюсь модифицировать скрипт для другой задачи, которую ставил перед собой изначально)
Автор: Evgeny1996
Дата сообщения: 18.05.2016 10:05
кто нибудь может помочь с задачей по ос,суть такова что необходимо создать 2 папки и закинуть в 1 папку текстовые файлы,затем перекинуть пару файлов во 2 папки но чтобы их названия были одинаковы,и если во 2 папке в файле что нибудь дописать или наоборот убрать то удалить этот файл из 1
Автор: ipmanyak
Дата сообщения: 23.05.2016 12:41
Evgeny1996
MD С:\ПАПКА1
MD С:\ПАПКА2
xcopy С:\ПАПКА1\*.txt С:\ПАПКА2
синхронизация папок
robocopy /MIR /E /V С:\ПАПКА2 С:\ПАПКА1
Автор: Joo1z
Дата сообщения: 23.05.2016 13:31
Туплю, опять туплю.
Есть задачка, нужно в конфиг в виде xml заменить блок.
Примерно так:
Было:
<settings>
<param1>0</param1>
</settings>
Стало:
<settings>
<param3>1</param3>
<param4>
<param4a>0</param4a>
</param4>
</settings>
Естественно, до и после блока settings нужно оставить данные неизменными.
Могу, например SED'ом выцепить sed /^<settings^>/,/^<\/settings^>/!d "config.xml"
но ка произвести замену именно внутри блока, не соображу. SED внутри SED?
Есть файл config_add.xml где только нужный блок <setings>, нужно его вставить внутрь config.xml.

Страницы: 123456789101112131415161718

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


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