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

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

Автор: EDINochka
Дата сообщения: 17.05.2009 17:59
01MDM, да через "set /p".
Автор: Alex1985
Дата сообщения: 17.05.2009 18:39
smirnvlad
кажется, echo лишнее, с ним не работает. или может код правится по другому а не удалением echo как это сделал я?
но в любом случае спасибо большое!
Автор: mdmaa
Дата сообщения: 17.05.2009 21:36
есть 2 выделенки, А получает все реквезиты автоматически, В - нужно прописывать ручками, собственно как сделать, чтоб не прописывать каждый раз....
Автор: Nagual
Дата сообщения: 17.05.2009 22:08
mdmaa
netsh dump>netsettings.inf
netsh exec netsettings.inf
Автор: king_stiven
Дата сообщения: 17.05.2009 22:09
EDINochka

Код: @echo off
setlocal enabledelayedexpansion
set /p number=Enter number:
call :klf
goto :eof
:klf
FOR /L %%e IN (0,1,100) DO (
if "!number:~%%e,1!"=="" goto :end
if "!number:~%%e,1!"=="0" set yes=1
if "!number:~%%e,1!"=="1" set yes=1
if "!number:~%%e,1!"=="2" set yes=1
if "!number:~%%e,1!"=="3" set yes=1
if "!number:~%%e,1!"=="4" set yes=1
if "!number:~%%e,1!"=="5" set yes=1
if "!number:~%%e,1!"=="6" set yes=1
if "!number:~%%e,1!"=="7" set yes=1
if "!number:~%%e,1!"=="8" set yes=1
if "!number:~%%e,1!"=="9" set yes=1
if not defined yes (
set /a chislo=%%e+1
echo !chislo! The entered Symbol "!number:~%%e,1!" is not Number
pause
)
set yes=
)
:end
Автор: wolf0425
Дата сообщения: 17.05.2009 23:29
Можно ли из батника определить - есть ли сейчас окно с именем name1?

Или еще каким-то определить - запущена сейчас другая копия этого батника или нет...
батник в 100% случаев терминируется через таскменеджер, так что менять какой-то флажок при завершении, а при старте проверять - не вариант, afaik.
Автор: anachrom
Дата сообщения: 18.05.2009 08:22

Цитата:
А какие трудности с прямой архивацией? в цикле FOR парсишь свой список и сразу выполняешь команду архивации. Надо только либо использовть полный путь при вызове архиватора или размещать его по путям описанным в PATH.

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

Добавлено:
Во, придумал. Можно, что бы батник, сам считывал свое местоположеие, и это пестоположение впихивал бы как путь до архиватора.
Это вообще реально?
Автор: king_stiven
Дата сообщения: 18.05.2009 08:36
anachrom

Цитата:
Можно, что бы батник, сам считывал свое местоположеие, и это пестоположение впихивал бы как путь до архиватора.

Ну шо ж ты в шапку то не смотришь? Пробежаться по ссылкам 5 минут.

Добавлено:

Цитата:
Переменная %0

Автор: anachrom
Дата сообщения: 18.05.2009 09:24
king_stiven
С переменной то я разобрался. А вот как это все будет применительно к коду батника бэкапа?
Я уже и так и так попробовал. Ну плохо у меня получается писать. Такая белиберда получается.
Я уже за книжичку засел. Но нахожусь пока на стадии зародыша "чайника". Стадию "кипятильник" прошел.
Автор: 01MDM
Дата сообщения: 18.05.2009 09:29
anachrom

Цитата:
Во, придумал. Можно, что бы батник, сам считывал свое местоположеие, и это пестоположение впихивал бы как путь до архиватора.



Код:
set arch=%~dp0arch.exe
Автор: Shestipaliy
Дата сообщения: 18.05.2009 14:30
Помогите пожалуйста, никак не могу понять почему на последнюю строку я получаю сообщение об ошибке "Непредвиденное появление: диск.". Этот код просто должен выводить список жесткик дисков в системе... Я видимо просто не до конца понимаю как в батниках работать с переменными, сравнивать и пр.

@echo off
SetLocal EnableExtensions EnableDelayedExpansion

set drives=
for /f "usebackq tokens=1*" %%a in (`FSUTIL FSINFO DRIVES ^| find ":"`) do (
if /i "%%a" NEQ "„ЁбЄЁ:" (
set "drives=!drives! %%a"
(call :sub %%a)

) ELSE (
set "drives=!drives! %%b"
(call :sub %%b)

)
)

:sub

For /F "Delims=" %%I In ('FSUTIL FSINFO drivetype %1') Do Set V=%%~I
set type=%v:~6%
Echo %type%
if %type% == "Жесткий диск" Echo %v%
Автор: NIKZZZZ
Дата сообщения: 18.05.2009 15:36
Shestipaliy

Цитата:
FSUTIL FSINFO DRIVES

Эта команда при выводе разделяет диски символом 0x0 (chr(0)), он не будет корректно отрабатываться.

Автор: 01MDM
Дата сообщения: 18.05.2009 15:43
Shestipaliy
Потому что это fsutil.. Ее вывод на консоль разделен не пробелами, а "нулем"

Код:
@echo off
setLocal

for /f "tokens=1 delims=\" %%i in ('fsutil fsinfo drives ^| more') do call:echo "%%i"
goto:eof

:echo
set disk=%~1
set disk=%disk:~-2%

for /f "tokens=2*" %%i in ('fsutil fsinfo drivetype %disk% ^| findstr Ж') do echo %disk% %%i %%j
Автор: milito
Дата сообщения: 18.05.2009 16:15
Привет, подскажите как сделать: Имеются файлы вида mmdd*.* (номера месяца и дня). Необходимо для каждой даты создать каталог, скопировать туда соответствующие файлы.
Автор: Shestipaliy
Дата сообщения: 18.05.2009 16:17
01MDM
Спасибо за помощь. Все работает, если сохранять в вордпаде в досовской кодировке).
Автор: Mr_Hat
Дата сообщения: 18.05.2009 17:30
hI All!
Подскажите как произвести поиск в реестре по заданой строке с помощью батника,
при совпадении ключи и параметры сохраняются в REG файл ?!

Решение найдено:

Код: @echo on
del /f /q c:\*.tmp
REG EXPORT HKLM c:\HKLM.tmp
REG EXPORT HKCU c:\HKCU.tmp
REG EXPORT HKCR c:\HKCR.tmp
REG EXPORT HKU c:\HKU.tmp
REG EXPORT HKCC c:\HKCC.tmp
echo. Windows Registry Editor Version 5.00 >c:\Forvardt.reg
echo. >>c:\Forvardt.reg
more c:\HKLM.tmp HKCU.tmp HKCR.tmp HKU.tmp HKCC.tmp | find /i "microsoft" >>c:\Forvardt.reg
del /f /q c:\*.tmp
Автор: ghosty
Дата сообщения: 18.05.2009 17:49
Прошу о помощи у местных гуру

Я выступаю "бета-тестером" очень полезного батника, призванного перекинуть папку c:\windows\installer с одного диска на другой. Никакие штатные средства не позволяют это сделать - там очень большие заморочки. Тема особенно актуальна для пользователей нетбуков, у которых один диск быстрый, другой - медленный (типа Asus eee PC):
http://forum.ru-board.com/topic.cgi?forum=62&topic=17017&glp#lt

Совсем недавно решение этой проблемы было найдено, но в инструкции слишком много букв, и обычный пользователь может легко ошибиться:
http://prism-it-services.com.au/blog/?tag=eee-pc

Поэтому автором идеи был написан батник. Но у меня он почему-то не работает. Вот комплект вместе с батником:
http://rapidshare.com/files/234413196/eeePC.rar
Чтобы он работал, майрософтовскую утилиту Siubinacl нужно установить, а также майрософтовскую утилитку junction.exe забросить в %windir%\system32
Вот полная инструкция (на английском): http://prism-it-services.com.au/blog/free-up-space-on-your-eee-pc-automated-method/

Буду очень признателен за любую помощь в отладке этого батника. Вы поможете тысячам людей
Автор: king_stiven
Дата сообщения: 18.05.2009 18:51
ghosty
Рапидшара отстой, купи 701 азус как у меня и не парься
Автор: strat
Дата сообщения: 18.05.2009 19:00

Цитата:
Но у меня он почему-то не работает.

и что же он выдает? может вы не принимаете лицензию в 8 пункте


Цитата:
Note: You may be asked to accept the licence agreement for Junction after you start the batch file.
Автор: yurkesha
Дата сообщения: 18.05.2009 19:22
anachrom
но ведь в такой ситуации все делается еще проще вот готовый [more=вариант]
Код: @ECHO OFF
REM Кодировка скрипта CP866(OEM/DOS)
REM Количество хранимых резевных копий
SET "REZERV_NUM=7"

REM Папка для хранения резервных копий - если надо не текущую впишите свою
REM По-умолчанию текущая папка
SET "BACKUP_DIR=%~dp0"

REM Путь где лежит архиватор - по-умолчанию текущая папка
SET "ARC_DIR=%~dp0"

REM Отбрасывание последнего символа "\" в пути бэкапа - для универсальности
SET "LAST_CHAR=%BACKUP_DIR:~-1%"
IF "%LAST_CHAR%"=="\" SET "BACKUP_DIR=%BACKUP_DIR:~0,-1%"

REM Отбрасывание последнего символа "\" в пути архиватора - для универсальности
SET "LAST_CHAR=%ARC_DIR:~-1%"
IF "%LAST_CHAR%"=="\" SET "ARC_DIR=%ARC_DIR:~0,-1%"

REM Представление даты в нужном нам виде
ECHO wscript.ECHO YEAR(DATE) ^& "_" ^& RIGHT(0 ^& MONTH(DATE),2) ^& "_" ^& RIGHT(0 ^& DAY(DATE),2) ^& "~" ^& RIGHT(0 ^& hour(TIME),2) ^& "-" ^& RIGHT(0 ^& minute(TIME),2)>"%TEMP%\tmp.vbs"
FOR /F %%i IN ('cscript "%TEMP%\tmp.vbs" //Nologo') DO SET "TEKDATATIME=%%i"
IF EXIST "%TEMP%\tmp.vbs" DEL "%TEMP%\tmp.vbs"

REM Предполагается что кодировка listbackup.txt CP866(OEM/DOS)
"%ARC_DIR%\7za.exe" a -tzip -scsDOS "%BACKUP_DIR%\%TEKDATATIME%.zip" @listbackup.txt>log.log 2>&1

ECHO Удаление устаревших резервных копий
FOR /F "SKIP=%REZERV_NUM% USEBACKQ TOKENS=1 DELIMS=" %%a IN (`DIR /O:-N /B "%BACKUP_DIR%\20??_??_??~??-??.ZIP"`) DO DEL /Q /F "%BACKUP_DIR%\%%a"
Автор: 01MDM
Дата сообщения: 18.05.2009 19:28
ghosty
Пробовать, я его не пробовал. Вот что сразу бросилось в глаза, в батнике назначаются права на папки, но названия локальных групп по-английски. Если виндоус русский, то соответственно батник не сработает.

Посмотри вывод `net localgroup`

И вообще там не надо использовать ни cacls.exe ни subincl.exe, т.к утилита xcopy с ключем /O и так копирует файлы, сохраняя ACL. Кроме того. Специально проверил - связь может создать только пользователь из группы "Администраторы" и права на эту связь назначаются точно такие, как и на папку Windows. Т.е нет необходимости в использовании данных утилит.

Можно смело удалять из батника все с этим связанное.

И здесь ошибка, если конечной папки нет, то надо либо ее заранее создать, либо обозначить целевую папку слешем

Код:
xcopy "%windir%\installer" "%target%\installer\" /E /I /H /K /O
Автор: king_stiven
Дата сообщения: 18.05.2009 19:50
01MDM

Цитата:
И здесь ошибка, если конечной папки нет, то надо либо ее заранее создать, либо обозначить целевую папку слешем

Если это не какой то особенный пример. то в обычных батниках никогда в конце слэш не испоьзую.
Автор: 01MDM
Дата сообщения: 18.05.2009 20:02
king_stiven

Цитата:
Если это не какой то особенный пример. то в обычных батниках никогда в конце слэш не испоьзую.


Попробуй:

Код:
md test
cd.>test\1.txt

:: 1 вариант
xcopy /e test test_1

:: 2 вариант
xcopy /e test test_1\

:: При условии, что изначально папка test_1 не существует
Автор: ghosty
Дата сообщения: 18.05.2009 20:07
strat

Цитата:
и что же он выдает? может вы не принимаете лицензию в 8 пункте

Да, забыл сказать. Он тупо не находит файл там, где он лежит. Говорит:
The system cannot find the file specified.

В комстроке:

Код: >"c:\program files\Windows Resource Kits\Tools\subinacl.exe" > NUL
The system cannot find the file specified
>echo %errorlevel%
0
Автор: king_stiven
Дата сообщения: 18.05.2009 20:18

Цитата:
меня 900 - какая разница? 4 Gb системный диск. После установки всего майрософтовского добра папка %windir%/installer разрастается более полутора гигов. И делать ей на быстром жестком диске ну совсем нечего.

Давай лучше на ЕЕЕ форуме об этом. Люди как то обходят, у меня она маленькая не знаю почему.
01MDM
ты забыл ключ /I
Автор: Snarrrk
Дата сообщения: 18.05.2009 21:36
Здравствуйте! Есть вопрос:
После визита на мой компьютер хитрого вируса ahsam компьютер стал видеть бат файлы, как просто текстовые документы, и открывать исключительно блокнотом. Не без помощи бубна вирус удалось извести, но ассоциация файла сбилась. В свойствах папки указал открывать файлы с таким расширением с помощью cmd.exe, но это не помогло, консоль их всё равно не видит. Подозреваю, что для решения проблемы надо в меню сопоставления файлов привязать данное расширение к какому-либо типу файлов, но я не знаю, как в данном меню этот тип файлов называется. Не подскажете?

Заранее спасибо за ответ!
Автор: LetMyPeopleGo
Дата сообщения: 18.05.2009 23:25
Для понимания ошибки нада включить печать - @echo on, выбрать папку назначения в самом батнике, строка set target=D:\junctions, запустить файл c:\move_win_installer_folder.bat > c:\1.txt и запостить файл лога 1.txt сюда.
Автор: ghosty
Дата сообщения: 19.05.2009 00:10
LetMyPeopleGo
Спасибо. Только что мне удалось найти причину ошибки. Но она до ужаса странная.
Почему-то винда не воспринимала оператор >NUL после пути - не могла найти указанные файлы, если в конце строки стоял этот оператор. Не могу себе представить, как это интерпретировать

Хорошо, удалил все >NUL из батника. Запустил. Теперь у меня есть два каталога installer - прежний и новый. Т.е. прежний удален не был. И оба этих каталога недоступны для просмотра и в них, якобы, ничего нет (size=0 bites). При вызове появляется сообщение

Цитата:
D:\junctions\installer is not accessible.
The name of the file cannot be resolved by the system


P.S. В синтаксисе бат-файлов я совсем не силен, поэтому заранее прошу простить мне эту слабость
Автор: Mr_Hat
Дата сообщения: 19.05.2009 03:08
hI All!
доброго времени суток.

Цитата:

Необходимо решение для экспортирования из реестра всех записей с маркером
"Forvardt Software", с дальнейшим сохранением.

С помощью батника производим поиск в реестре по заданой строке "Forvardt Software" ,
при совпадении ключи и параметры сохраняются в REG файл


Код:
@echo on
del /f /q c:\*.tmp
REG EXPORT HKLM c:\HKLM.tmp
REG EXPORT HKCU c:\HKCU.tmp
REG EXPORT HKCR c:\HKCR.tmp
REG EXPORT HKU c:\HKU.tmp
REG EXPORT HKCC c:\HKCC.tmp
echo. Windows Registry Editor Version 5.00 >c:\Forvardt.reg
echo. >>c:\Forvardt.reg
more c:\HKLM.tmp HKCU.tmp HKCR.tmp HKU.tmp HKCC.tmp | find /i "Forvardt Software" >>c:\Forvardt.reg
del /f /q c:\*.tmp

Автор: AZJIO
Дата сообщения: 19.05.2009 06:37
Сделал код в случае ошибки, реагирующий на нажатие клавиши, только не могу найти данных по команде !random!%%9 чтоб правильно её задействовать.

Цитата:
@echo off
color 3b

:error
IF NOT EXIST "%SystemRoot%" goto exit
color 0c
Set /a bg=!random!%%9
Set /a font=!random!%%9
color %bg%%font%
CLS
echo.
echo.
echo.
echo ===============================================================================
echo.
echo г¤ «ЁвҐ Ї ЇЄг %SystemRoot% ЇҐаҐ¤ Їа®¤®«¦Ґ-ЁҐ¬
echo.
echo ===============================================================================
echo.
echo.
pause
setlocal enabledelayedexpansion
goto error
:exit
exit

Mr_Hat
У меня скрипт совсем не работает, и судя по батнику из файла будут вытаскиваться только строки с найденным текстом и всё в одну кучу. А ведь у рег-файла есть формат записи.
Батником посоветовать не могу, но в программе "Registry Workshop" используешь поиск, далее выделяешь найденные строки и в контестном меню выбираешь "экспорт", получается корректный рег-файл.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: как сохранить сетевые настройки


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