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

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

Автор: vu1tur
Дата сообщения: 02.10.2007 14:52
Vadzim2003
for /F %%a in ('dir /B /OD') do @set file=%%a
Автор: Vadzim2003
Дата сообщения: 02.10.2007 15:51
Thanks!!!vu1tur
Автор: NIKZZZZ
Дата сообщения: 02.10.2007 16:11
TimAlex

Цитата:
Start /wait regedit /ea "1325.reg" "HKEY_USERS\S-1-5-21-1454471165-1972579041-1417001333-1325"
Start /wait reg delete /f
gsar -s"S-1-5-21-1454471165-1972579041-1417001333-1325" -r".DEFAULT" -o 1325.reg
Start /wait regedit /s "1325.reg"

А зачем так сложно?

Код: Start /wait reg delete HKU\.DEFAULT /f
Start /wait reg copy "HKU\S-1-5-21-1454471165-1972579041-1417001333-8780" "HKU\.DEFAULT" /s /f
Автор: Smitis
Дата сообщения: 02.10.2007 19:34
А зачем у вас везде start /wait для запуска консольного reg.exe?

И ещё, для справки: для экспорта реестра в ansi формат при помощи reg.exe нужно использовать ключ /nt4

Код:
reg export HKU\S-1-5-21-1454471165-1972579041-1417001333-1325 12345.reg /nt4
Автор: NIKZZZZ
Дата сообщения: 02.10.2007 20:44
Smitis

Цитата:
А зачем у вас везде start /wait для запуска консольного reg.exe?

Он был в оригинальном батнике, в общем-то не нужен.
Автор: TimAlex
Дата сообщения: 03.10.2007 04:28

Цитата:
А зачем так сложно?

Код:Start /wait reg delete HKU\.DEFAULT /f
Start /wait reg copy "HKU\S-1-5-21-1454471165-1972579041-1417001333-8780" "HKU\.DEFAULT" /s /f


Хм.. не подумал... ведь действительно так проще..
Автор: GORA2
Дата сообщения: 03.10.2007 09:43
Подскажите, можно ли с помощью gsar заменить стринг на значение переменной в бат файле? Не на имя переменной, а именно на ее значение.
Делаю так:
Код: gsar -is%%S -r%var% config.txt temp_config.txt
Автор: Elroir
Дата сообщения: 03.10.2007 10:18
GORA2
Приведи полный (насколько возможно) код батника.
Автор: GORA2
Дата сообщения: 03.10.2007 10:57
Elroir
C переменной вроде сам разобрался, но возникли новые вопросы:
1 Если переменная содержит путь к папке, а в нем могут быть разные "специфические" символы, то как быть?
2 Может ли gsar находить стринг (часть строки), а заменять всю строку на другую?
Вот кусок тестового батника
Код: @echo off
set var=%~dp0
set var=%var:~0,2%:%var:~2%
set file=config.txt
del temp_config.txt>nul
echo %var%
echo %file%

gsar -is%%%%S -r%var% %file% temp_config.txt

pause>nul
exit
Автор: Elroir
Дата сообщения: 03.10.2007 13:31
GORA2

Цитата:
1 Если переменная содержит путь к папке, а в нем могут быть разные "специфические" символы, то как быть?

Можно заменить эти символы на их ASCII коды ( для gsar-а это двоеточие, трехзначный десятичный код ASCII и еще раз двоеточие), например -
название директории "A & B" - присутствует спец. символ "&".
делаем так:
set "var=A & B"
set "var=%var:&=:038:%"
теперь в переменной var будет "А :038: B".

Цитата:
2 Может ли gsar находить стринг (часть строки), а заменять всю строку на другую?

Нет.
Автор: wolf0425
Дата сообщения: 03.10.2007 13:52

Цитата:

Цитата: 2 Может ли gsar находить стринг (часть строки), а заменять всю строку на другую?
Нет.
Автор: GORA2
Дата сообщения: 03.10.2007 13:57
Elroir

Цитата:
Можно заменить эти символы на их ASCII коды
Это я понял из описания, но т.к. путь находиться в переменной и мне заранее не известен, то как можно автоматизировать эту замену? Перебирать все возможные спец символы?


Цитата:
зато так можно искать/заменять с помощью sed
Уж очень он "тяжел" для моих задач, но спасибо за подсказку.
Автор: Elroir
Дата сообщения: 03.10.2007 14:15
GORA2

Цитата:
Перебирать все возможные спец символы?

Ага
На самом деле их не так уж и много.
Автор: GORA2
Дата сообщения: 03.10.2007 14:25
Elroir

Цитата:
Ага
На самом деле их не так уж и много.
А не могли бы Вы перечислить все допустимые символы возможные в путях (ну два алфавита и цифры можно исключить, я это знаю) так сказать в порядке "ликбеза" .
Кстати
Цитата:
gsar-а это двоеточие, трехзначный десятичный код ASCII и еще раз двоеточие
по моему, не совсем верно. Второго двоеточия не надо.
Автор: Elroir
Дата сообщения: 03.10.2007 14:47
GORA2

Цитата:
Второго двоеточия не надо

Точно - это я переборщил.

Цитата:
А не могли бы Вы перечислить все допустимые символы возможные в путях

Тут дело не в возможных символах в путях, а в тех, которые cmd может интерпретировать как спец. символы - & ! % ^ ( ) | < > (может что-то и пропустил).
Автор: GORA2
Дата сообщения: 03.10.2007 15:08
Elroir

Цитата:
Тут дело не в возможных символах в путях, а в тех, которые cmd может интерпретировать как спец.
Да, но тут еще вмешивается и gsar. Двоеточие и пробел (а может и еще что то) в путях тоже приходиться обходить.
Пошел думать. Спасибо за помощь.
Автор: king_stiven
Дата сообщения: 03.10.2007 18:16
GORA2
replacer.exe вроде не боится спецсимволов, ссылки не помню.

Вопрос: у кого английская винда, если в батнике будет chcp 1251, не сбоит?
Автор: Elroir
Дата сообщения: 03.10.2007 21:23
king_stiven

Цитата:
Вопрос: у кого английская винда, если в батнике будет chcp 1251, не сбоит?

Что ты имеешь в виду?
Автор: king_stiven
Дата сообщения: 03.10.2007 21:40
В смысле не мешает нормальному ходу батника?
Автор: Elroir
Дата сообщения: 03.10.2007 22:47
king_stiven
Не мешает.
Автор: Dying_Fetus
Дата сообщения: 03.10.2007 22:52
Каким образом я могу присвоить переменной результат выполнения команды hostname?

Вот пример:
set name=hostname
echo %name%
К моему удивлению на дисплюе показывается не имя компа, а именно текст "hostname". Стрянно...
Автор: Elroir
Дата сообщения: 03.10.2007 23:06
Dying_Fetus

Код:
for /f %%a in ('hostname') do set "name=%%a"
echo %name%
Автор: king_stiven
Дата сообщения: 03.10.2007 23:11
Dying_Fetus
Сравни эти две команды

Код: echo hostname
Автор: BorlandIMHO
Дата сообщения: 03.10.2007 23:13

Цитата:
К моему удивлению на дисплюе показывается не имя компа, а именно текст "hostname". Стрянно...
Ничего странного. Показывается значение переменной name, которой непосредственно перед этим было присвоено значение hostname.
Вообще говоря, мне не очень понятен смысл данного "скрипта"...
Если я правильно понял, он выпонняется под Windows, а в любых WinNT (3.5x/4.0/2000/XP/2003/Vista) определена переменная окружения COMPUTERNAME со значением, соответствующим имени компа. Т.е., echo %COMPUTERNAME% просто выдаст имя компа без каких-либо дополнительных команд...
Автор: king_stiven
Дата сообщения: 03.10.2007 23:19
Elroir
replacer
replacer.exe /?
Режим множественной замены у неё барахлил.
Автор: Dying_Fetus
Дата сообщения: 03.10.2007 23:48
BorlandIMHO
Спасибо за подсказку с переменной %COMPUTERNAME%. В данном случае это как-раз то, что нужно.
Но все же, могу ли я присвоить переменной значение возвращаемое другой командой (не обязательно hostname, это может быть, например, tracert)? Если да, то как?
Автор: Elroir
Дата сообщения: 04.10.2007 01:45
Dying_Fetus
Я же тебе ответил - http://forum.ru-board.com/topic.cgi?forum=62&topic=11825&start=220#13
Делаешь разбор вывода команды с помощью "for /f"
Автор: Nagual
Дата сообщения: 04.10.2007 02:54
Elroir
как то решил протестить оператор for для разбора команды без кавычек и ключа /f
оказалось, что можно использовать такую конструкцию
for %%a in (dir/b *) do set "name=%%a"
интересно, почему так?
Автор: Elroir
Дата сообщения: 04.10.2007 03:27
Nagual
Не... нельзя
Создается иллюзия работы команды "dir/b". Ключевую роль здесь играет символ "*", который for воспринимает как маску файлов и, соответственно, проходится по всем файлам в текущей директории.
Если посмотреть внимательно на вывод той команды, которую ты привел, можно увидеть, что в переменную name сначало попадает значение "dir/b", а потом, по одному, туда заносятся названия файлов.
Автор: Vadzim2003
Дата сообщения: 04.10.2007 10:28
Есть папочка C:\temp
В ней много log-файлов. Нужно оставить самый "молодой" по времени. Остальные зазиповать. Как мне здесь уже подсказали ранее
---------------------------------------------------
@echo off

SET ARCHIVE_SUFFIX=%DATE%

SET ARCHIVE_SUFFIX=%ARCHIVE_SUFFIX:.=%
SET ARCHIVE_SUFFIX=%ARCHIVE_SUFFIX:/=%
SET ARCHIVE_SUFFIX=%ARCHIVE_SUFFIX:-=%
SET ARCHIVE_SUFFIX=%ARCHIVE_SUFFIX: =%

for /F %%a in ('dir /B /OD *.log') do @set file=%%a

"C:\Temp\7za455\7za" a -tzip log_%ARCHIVE_SUFFIX%.zip *.log -x!%file%
-----------------------------------------------------

Проблема, что 7zip не понимает команды "добавить в архив с перемещением", а другой архиватор использовать к сожалению не могу.

Как теперь удалить старые лог-файлы после их архивации?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

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


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