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

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

Автор: cin
Дата сообщения: 02.08.2010 11:31
ну вот я получил
d:\ - Жесткий диск

как мне засунуть эту инфу в батник?
А если винда не русская?
Автор: BVV63
Дата сообщения: 02.08.2010 11:35
wolf0425

Цитата:
fsutil.exe fsinfo drivetype d:\

Для задачи cin сойдёт. Но вообще-то желательно поизбирательнее способ найти. Чтобы мог отличить, к примеру USB-HDD и Subst-разделы от "честных" разделов HDD. Ни так, ни через опрос WMI это не получается.

Добавлено:
Впрочем от Subst-разделов можно отделаться дополнительной обработкой команды "Subst". Но вот ещё бы и от USB-HDD-разделов как-то отделаться.

Добавлено:
cin
Можешь также такой способ использовать:

Код: Set Share_Drive=C
For /F "Skip=1 Tokens=1 UseBackQ" %%A In (`WMIC.Exe Path Win32_LogicalDisk Where DeviceID^="D:" Get DriveType`) Do (If "%%A"=="3" Set Share_Drive=D)
Автор: us0r
Дата сообщения: 02.08.2010 12:11
cin

Код: for /f "usebackq delims==" %%i in (`fsutil fsinfo drivetype D:\`) do set driveinfod=%%i
REM для проверки можешь вставить следующую строку:
echo %driveinfod%
Автор: lorents
Дата сообщения: 02.08.2010 14:45
wolf0425
Сейчас протестировал твой код, и вышло так что jhead.exe не получает параметры.
Файл config.ini

Цитата:
dc = true    ;Delete comment field (as left by progs like Photoshop & Compupic)
de = true    ;Strip Exif section (smaller JPEG file, but lose digicam info)
di = true    ;Delete IPTC section (from Photoshop, or Picasa)
dx = true    ;Deletex XMP section
du = true    ;Delete non image sections except for Exif and comment sections



Цитата:
А нафига? заняться больше нечем?

Там будет несколько секций
Автор: wolf0425
Дата сообщения: 02.08.2010 17:11

Цитата:
Сейчас протестировал твой код, и вышло так что jhead.exe не получает параметры.
пруфлинк где? в смысле отключай echo и показывай что пишет.
тот код по очевидным причинам должен на "%%~fi" ругаться - его там никто не определял, а собственно формирование списка ключей работает замечательно.

Цитата:
Там будет несколько секций

а нафига? типа тебе заняться больше нечем?
И всё остальное уже в улучшениях не нуждается?
написать примитивный разбор секций никакой особой проблемы нет, только я смысла не вижу - нафига это писать вообще и кому от этого будет польза. обучаемость то у тебя практически нулевая, похоже что ты расчитываешь что за тебя всегда будут всё писать.
Автор: lorents
Дата сообщения: 02.08.2010 17:29
wolf0425

[more]
Цитата:
C:\>set "_keys="

C:\>for /F "tokens=1,2 delims=;= " %a in (config.ini) do if /I .%b EQU .true call set "_keys=%_keys%
-%a"

C:\>if /I .true EQU .true call set "_keys=%_keys% -dc"

C:\>if /I .true EQU .true call set "_keys=%_keys% -de"

C:\>if /I .true EQU .true call set "_keys=%_keys% -di"

C:\>if /I .true EQU .true call set "_keys=%_keys% -dx"

C:\>if /I .true EQU .true call set "_keys=%_keys% -du"

C:\>"jhead.exe" "Download.jpg"
File name : Download.jpg
File size : 952658 bytes
File date : 2010:08:02 12:35:05
Date/Time : 2010:02:09 15:04:12
Resolution : 1575 x 2496
Jpeg process : Progressive
======= IPTC data: =======
Record vers. : 2


C:\>pause
Для продолжения нажмите любую клавишу . . .
[/more]

Цитата:
тот код по очевидным причинам должен на "%%~fi" ругаться - его там никто не определял,

я просто протестировал твой код, в данном случаи я заменил "%%~fi" на "Download.jpg", как видно код его видит?
Автор: wolf0425
Дата сообщения: 03.08.2010 08:19

Цитата:
как видно код его видит?
у тебя строка кода не видит %_keys% почему-то. точно без ошибок вписал?

влепи set _ перед последней строкой, хоть посмотрим что в переменной.
Автор: 01MDM
Дата сообщения: 03.08.2010 08:30
lorents, слегка видоизмененный:

Код:
@echo off
setlocal

for /f "eol=; tokens=1,2 delims== " %%i in ('findstr /v "\[" config.ini') do (
    call:check %%i %%j
)
:: "%~dp0Docs\jhead.exe" %params%
echo %params%

goto:eof

:check
if "%2"=="true" set "params=%params% -%1"
Автор: lorents
Дата сообщения: 03.08.2010 09:31
wolf0425
[more]
Код: C:\Jhead>set "_keys="

C:\Jhead>for /F "tokens=1,2 delims=;= " %a in (config.ini) do if /I .%b EQU .true call set "_keys=%_
keys% -%a"

C:\Jhead>if /I .true EQU .true call set "_keys=%_keys% -dc"

C:\Jhead>if /I .true EQU .true call set "_keys=%_keys% -de"

C:\Jhead>if /I .true EQU .true call set "_keys=%_keys% -di"

C:\Jhead>if /I .true EQU .true call set "_keys=%_keys% -dx"

C:\Jhead>if /I .true EQU .true call set "_keys=%_keys% -du"

C:\Jhead>set jhead.exe Download.jpg
Переменная среды jhead.exe не определена

C:\Jhead>pause
Для продолжения нажмите любую клавишу . . .
Автор: Vitaly_Sigov
Дата сообщения: 03.08.2010 10:05
Здравствуйте, уважаемые форумчане.
Подскажите, пожалуйста, как правильно написать в батнике:

cacls %~dp0 /D KTI\USER

Т.е. запуск батника ведется и зкталога в котором он находится.
Но при его выполнении после нажатия на y (продолжить) выводится сообщение об ошибке : "Не удается найти указанный файл"
Большая просьба помочь...
Автор: cin
Дата сообщения: 03.08.2010 10:20
cacls %~dp0% /D KTI\USER
Автор: wolf0425
Дата сообщения: 03.08.2010 10:23

Цитата:
wolf0425 Подробнее...
ты читаешь что тебе пишут?

Цитата:
влепи set _ перед последней строкой, хоть посмотрим что в переменной.
где в этом подробнее строка set _ перед строкой jhead.exe ?
"перед строкой" и "в начало строки" - несколько разные вещи, тем более что минимально задумавшись мог сам догадаться о том что пишешь бессмысленную команду.

Vitaly_Sigov а посмотреть что %~dp0 заканчивается на \ и догадаться что cacls это не понимает - не судьба?
попробуй cacls %~dp0. /D KTI\USER

ну а если не поможет - обрезай \ врчную, с использованием промежуточной переменной


Автор: lorents
Дата сообщения: 03.08.2010 10:38
wolf0425

Цитата:
ты читаешь что тебе пишут?

извиняюсь

[more]
Код: C:\Jhead>set "_keys="

C:\Jhead>for /F "tokens=1,2 delims=;= " %a in (config.ini) do if /I .%b EQU .true call set "_keys=%_
keys% -%a"

C:\Jhead>if /I .true EQU .true call set "_keys=%_keys% -dc"

C:\Jhead>if /I .true EQU .true call set "_keys=%_keys% -de"

C:\Jhead>if /I .true EQU .true call set "_keys=%_keys% -di"

C:\Jhead>if /I .true EQU .true call set "_keys=%_keys% -dx"

C:\Jhead>if /I .true EQU .true call set "_keys=%_keys% -du"

C:\Jhead>set _
Переменная среды _ не определена

C:\Jhead>jhead.exe Download.jpg
File name : Download.jpg
File size : 952658 bytes
File date : 2010:08:02 12:35:05
Date/Time : 2010:02:09 15:04:12
Resolution : 1575 x 2496
Jpeg process : Progressive
======= IPTC data: =======
Record vers. : 2


C:\Jhead>pause
Для продолжения нажмите любую клавишу . . .
Автор: Vitaly_Sigov
Дата сообщения: 03.08.2010 10:47
Спасибо большое.
И еще можете подсказать:Что нужно прописать, чтобы при выполнении команды cacls в bat-файле не выводился запрос Продолжить: Y/N ?
Автор: wolf0425
Дата сообщения: 03.08.2010 10:51
lorents у тебя в конфиге после true - табуляция что-ли, а не пробелы?
чего-то понять не могу - чему там табуляция мешает, но она мешает

Добавлено:
Vitaly_Sigov
да перенаправление впиши, echo y | cacls ...
Автор: lorents
Дата сообщения: 03.08.2010 11:10
wolf0425

Цитата:
у тебя в конфиге после true - табуляция что-ли, а не пробелы?

да. сделал пробелы и все работает.
Автор: wolf0425
Дата сообщения: 03.08.2010 11:51
lorents держи с разбором секций

Код: @echo off
setlocal enabledelayedexpansion

set "_section=default"
for /f "tokens=1,2 delims=;= " %%a in (config.ini) do call :_check %%a %%b

set sec-
echo "%~dp0Docs\jhead.exe" %sec-jhead% "%%~fi"
goto :eof

:_check
set _key=%1
if %_key:~0,1% equ [ if %_key:~-1% equ ] set "_section=%_key:~1,-1%" && goto :eof
if /i "%~2" neq "true" goto :eof
set "sec-%_section%=!sec-%_section%! -%1"
goto :eof
Автор: Mark_Titov
Дата сообщения: 03.08.2010 12:32
Ребят, подскажите как батником убрать галочку по следующему пути -

My Computer - Properties - Advanced - Perfomance(Settings) - Visual Effect - SHOW SHADOWS UNDER MENUS ???

Буду очень признателен...
Автор: Vitaly_Sigov
Дата сообщения: 03.08.2010 12:50
Уважаемые форумчане, подскажите, пожалуйста, можно ли в bat-файле при помощи команды cacls задать разрешения на папку сразу для нескольких пользователей ?

Например:

echo y|cacls %~dp0. /G KTI\User1:F
@pause
echo y|cacls %~dp0. /G KTI\User2:F
@pause
Автор: lorents
Дата сообщения: 03.08.2010 13:11
wolf0425
Спасибо

Цитата:
табуляции вроде переваривает...

работает

Цитата:
; xxx true а вот такое писать не стоит - нежданчик будет из-за true.

не совсем понял, я не могу писать "true" в комментариях?
Автор: 01MDM
Дата сообщения: 03.08.2010 13:31

Цитата:
задать разрешения на папку сразу для нескольких пользователей ?

Можно:

Код:
.... /g user1:F user2:N user3:R .....
Автор: us0r
Дата сообщения: 03.08.2010 16:11
Mark_Titov
Это уже реестр...

Код: [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\DropShadow]
"DefaultApplied"=dword:00000001
"DefaultValue"=dword:00000000
"DefaultByAlphaTest"=dword:00000000
Автор: wolf0425
Дата сообщения: 03.08.2010 18:24
lorents
Цитата:
не совсем понял, я не могу писать "true" в комментариях?

не в любом месте
конкретно - проблемы если true - второе слово строки, причем в комментарии.
xx = true ; rem true - писать можно
проблема там в том, что символ ; очень хочется в список разделителей - если этого не делать то будет проблема у разбора строк без пробелов, типа xx=true;rem ...
а комментарии там в общем-то ничем от значащих строк не отличаюся.
Можно чего-то пропридумывать, но муза бастует.
Автор: lorents
Дата сообщения: 03.08.2010 18:57
wolf0425
понял. спасибо

Цитата:
Можно чего-то пропридумывать, но муза бастует.

Пусть твоя муза отдыхает от меня

Добавлено:
wolf0425
заметил проблему

[more=config.ini]
Цитата:
[JPEG]
;Если Вы хотите не удалять определенные метаданные, то замените значение "true" на "false" там, где это необходимо.
dc = true    ;Delete comment field (as left by progs like Photoshop & Compupic)
de = true    ;Strip Exif section (smaller JPEG file, but lose digicam info)
di = true    ;Delete IPTC section (from Photoshop, or Picasa)
dx = true    ;Deletex XMP section
du = true    ;Delete non image sections except for Exif and comment sections

[PNG Dirty Transparency]
;Если Вы не хотите применять систему "Dirty Transparency" для PNG-файлов с альфаканалом, то замените значение "true" на "false".
dt = true

[Drag and Drop]
;Если Вы хотите заменять оригинальные изображения на оптимизированные, то замените значение "false" на "true".
dd = false
[/more]

bat-файл выдает:

Цитата:
sec-JPEG= -dc -de -di -dx -du -dt


Почему так происходит? это же не комментарий
Автор: Mark_Titov
Дата сообщения: 03.08.2010 19:11

Цитата:
REG ADD напишешь сам?

Конечно! Спасибо us0r, выручил...

Может кто знает как решить батником такую задачу -

есть строка -

@echo off
call wol -ip poweron 192.xx.xx.xx -subnet 255.255.255.0 -mac 002BCD92337А

Это включение компа посети при помощи утилитки WOL, так вот, все работает, но есть одно неудобство которое хотелось бы устранить, а именно при первом использовании этой команды выскакивает окно фаервола с запросом о разблокировке оного.
Может как то через реестр в батниником прописать что мол эту софтинку разблокировать и дальше собственно сам код который я привел выше...
А как, что и где прописывать - незнаю, помогите, если не сложно пож-ста...

Заранее благодарю...
Автор: wolf0425
Дата сообщения: 03.08.2010 20:27
lorents
Цитата:
заметил проблему
ну а на что ты рассчитывал?
пробелы из имен секций убирай нафиг! например на подчерки заменяй.


Добавлено:
Mark_Titov
Цитата:
при первом использовании этой команды выскакивает окно фаервола с запросом о разблокировке оного.
а какой у тебя фаервол - мы догадываться должны?
И чем плохо то, что окно выскакивает если в фаерволе настроено что оно должно выскакивать? Не нравится - настрой свой фаервол как надо.
Автор: Mark_Titov
Дата сообщения: 03.08.2010 20:53

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

Да, забыл - виндовый..


Цитата:
И чем плохо то, что окно выскакивает если в фаерволе настроено что оно должно выскакивать? Не нравится - настрой свой фаервол как надо.

Дело в том что не только я этим батником буду пользоваться, и юзеры будут пугаться на такие "страшные кнопки и запросы" реагировать и по 100 раз будут спрашивать что делать мол, потому и хочу без лишних вопросов все сделать... Если можно конечно...

Спасибо...
Автор: lorents
Дата сообщения: 03.08.2010 21:07
wolf0425

Цитата:
пробелы из имен секций убирай нафиг! например на подчерки заменяй.

не понял, что надо сделать?
Автор: wolf0425
Дата сообщения: 03.08.2010 21:34

Цитата:
не понял, что надо сделать?

[PNG Dirty Transparency] и [Drag and Drop] - это имена секций инишника, служебные поля, а не просто место для самовыражения.
пробелов в именах секций быть не должно, они же потом батником в имена переменных преобразуются, если уж хочешь многословные - подчерками заменяй. но думай что получится, %sec-PNG_Dirty_Transparency% - по моему как-то черезчур будет
Автор: lorents
Дата сообщения: 03.08.2010 21:40
wolf0425

Цитата:
но думай что получится, %sec-PNG_Dirty_Transparency% - по моему как-то черезчур будет

да не в самый раз
Спасибо

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

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


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