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

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

Автор: de1eted
Дата сообщения: 24.07.2007 22:24
vmix
последнее, что пришло в голову: Directory Opus логит все операции с файлами и может сохранить в txt, который можно отпарсить.

ЛЮДИ КТО-НИТЬ расставит кавычки?

Цитата:
set mirpath=%USERPROFILE%\Application data\MirandaJ\nul
IF NOT EXIST %mirpath%
xcopy \\server\soft\mirandaJ %USERPROFILE%\Application data\MirandaJ /s


Задача взять папку с сервака и положить в профиль юзверя


Добавлено:
AdletFromKZ
да, но врядли она она станет мультипроцессорной
Автор: Nagual
Дата сообщения: 24.07.2007 23:02
в переменной %%a есть символы <>
как заставить команду set скушать их?
set %%a=%%b получается ошибка
Автор: Elroir
Дата сообщения: 24.07.2007 23:30
Nagual
Ты не можешь так использовать переменные вида %%x или %x - им нельзя присвоить значение.
А если обычная переменная, тогда так:

Код: set "test=<>"
Автор: de1eted
Дата сообщения: 24.07.2007 23:50
спасибо!!!
правленный код:

Цитата:
set "mirpath=%USERPROFILE%\Application data\MirandaJ"
IF NOT EXIST "%mirpath%" (
xcopy \\server\soft\mirandaJ "%USERPROFILE%\Application data\MirandaJ" /s /i /q
)

Автор: Nagual
Дата сообщения: 25.07.2007 00:05
Elroir
Введите команду: set "test=<>" &&echo %test%
Непредвиденное появление: >.
Автор: Elroir
Дата сообщения: 25.07.2007 00:10
JohnRD

Цитата:
подскажите пожалуйста
как поднять регистр у $COMPUTERNAME$


Код:
@echo off
setlocal
set "test=%computername%"
echo %test%
set "test=%test:a=A%"
set "test=%test:b=B%"
set "test=%test:c=C%"
set "test=%test:d=D%"
set "test=%test:e=E%"
set "test=%test:f=F%"
set "test=%test:g=G%"
set "test=%test:h=H%"
set "test=%test:i=I%"
set "test=%test:j=J%"
set "test=%test:k=K%"
set "test=%test:l=L%"
set "test=%test:m=M%"
set "test=%test:n=N%"
set "test=%test:o=O%"
set "test=%test:p=P%"
set "test=%test:q=Q%"
set "test=%test:r=R%"
set "test=%test:s=S%"
set "test=%test:t=T%"
set "test=%test:u=U%"
set "test=%test:v=V%"
set "test=%test:w=W%"
set "test=%test:x=X%"
set "test=%test:y=Y%"
set "test=%test:z=Z%"
echo %test%
Автор: Nagual
Дата сообщения: 25.07.2007 00:12
дело в том, что я читаю входящую строку из файла командой
for /f "delims== tokens=1,2" %%a in (%conf%) do (set %%a=%%b)
содержание которого такое
find_string=<HTML>
так вот, если убрать символы <>, то все норамльно читается, а ведь иногда они нужны
может есть способ это обойти?
Автор: Elroir
Дата сообщения: 25.07.2007 00:16
Nagual

Цитата:
Непредвиденное появление: >.

Вопрос был - как "как заставить команду set скушать их?", а не "как заставить команду echo скушать их?"

Код:
set "test=<>"
set "test=%test:<=^<%"
set "test=%test:>=^>%"
echo %test%
Автор: Maza Faka
Дата сообщения: 25.07.2007 08:26
JohnRD

Цитата:
тоесть если COMPUTERNAME=ivanov-ab или Ivanov-AB а нужно IVANOV-AB

Можно так:

Код:
@echo off
set str=%computername%
for %%a in (
A B C D E F G H I
J K L M N O P Q R
S T U V W X Y Z
) do call :UCase %%a

echo UCase(%computername%) = %str%
pause
goto :EOF

:UCase
set var=%1
call set str=%%str:%var%=%var%%%
Автор: wolf0425
Дата сообщения: 25.07.2007 09:45
Maza Faka вложенный Call там совершенно лишний

Код: set str=%computername%
for %%a in ( A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ) do call set str=%%str:%%a=%%a%%
echo UCase(%computername%) = %str%
pause
Автор: ROMANEX
Дата сообщения: 25.07.2007 09:59
vserd
что-то не получается. можно всю строку с указанием папки с которой начинать и места куда сохранять. Спасибо!
Автор: Yuki2003
Дата сообщения: 25.07.2007 12:18
Подскажите, как обработать ошибку:
если

Код: for /f "tokens=2*" %%a in ('reg query HKLM\Software\7-Zip /v Path ^| findstr /i Path') do set backup=%%b\7z.exe
Автор: KapralBel
Дата сообщения: 25.07.2007 12:26
Yuki2003
REG возвращает по ErrorLevel 1 если не нашло ветку реестра
Автор: Elroir
Дата сообщения: 25.07.2007 13:43
KapralBel
Вряд ли из скобок for-a можно вытащить errorlevel

Yuki2003

Код: for /f "tokens=2*" %%a in ('reg query HKLM\Software\7-Zip /v Path 2^>nul ^| findstr /i Path') do set "backup=%%b\7z.exe"
if "%backup%"=="\7z.exe" echo Файловый архиватор 7-Zip не установлен>>errors.txt
Автор: KapralBel
Дата сообщения: 25.07.2007 13:47
Elroir
А зачем тогда все делать в скобках?


Код: reg query HKLM\Software\7-Zip>Nul
If ErrorLevel 1 (Echo Не установлен) & (GoTo :EOF)
for /f "tokens=2*" %%a in ('reg query HKLM\Software\7-Zip /v Path ^| findstr /i Path') do set backup=%%b\7z.exe
Автор: Yuki2003
Дата сообщения: 25.07.2007 13:49
KapralBel
так

Код: For /f "tokens=2*" %%a In ('reg query HKLM\Warez\7-Zip /v Path ^| FindStr /i Path') Do Set backup=%%b\7z.exe & If ErrorLevel 1 echo Файловый архиватор 7-Zip не установлен>>errors.txt
Автор: Elroir
Дата сообщения: 25.07.2007 13:54
Yuki2003

Цитата:
а что "делает" 2^>nul

Он как раз и скрывает сообщение "системе не удалось..."

Автор: Yuki2003
Дата сообщения: 25.07.2007 13:57
Elroir
Понял, я просто свой скрипт пишу "тупым копированием" из форума
А что в данном случае делает символ ^?

Добавлено:

Код: For /f "tokens=2*" %%a In ('reg query HKLM\Warez\7-Zip /v Path 2^>nul ^| FindStr /i Path') Do Set backup=%%b\7z.exe
Echo %ErrorLevel%
Автор: KapralBel
Дата сообщения: 25.07.2007 14:02
Yuki2003
тебе надо красивое или работоспособное решение ?

^ -позволяет использовать следующий спецсимвол как обычный символ
Автор: Yuki2003
Дата сообщения: 25.07.2007 14:02
KapralBel
красивое!
Автор: KapralBel
Дата сообщения: 25.07.2007 14:03

Цитата:
Выдает 0 Это потому что, его Do Set "перекрыл"?

Это уже результат Set Backup=

Добавлено:
Yuki2003

Цитата:
красивое!

Тогда сбрасывай результат команды REG Query в файл и обрабатывай её в FOR /F
Автор: Yuki2003
Дата сообщения: 25.07.2007 14:17

Цитата:
KapralBel
Тогда сбрасывай результат команды REG Query в файл и обрабатывай её в FOR /F

Наверное у меня неправильное понятие "красивости", это кажется еще хуже
А почему все-таки вот такой упрощенный пример не работает?

Код: For /f "tokens=2*" %%a In ('reg query HKLM\Warez\7-Zip /v Path 2^>nul ^| FindStr /i Path') Do If ErrorLevel 1 Echo 7-Zip не установлен
Echo %ErrorLevel%
Автор: Elroir
Дата сообщения: 25.07.2007 14:23
Yuki2003
Чем тебе не нравится код, который я предложил?


Цитата:
А почему все-таки вот такой упрощенный пример не работает?

Потому что errorlevel изнутри for-a не вытаскивается.
Автор: Yuki2003
Дата сообщения: 25.07.2007 14:27

Цитата:
Elroir
Потому что errorlevel изнутри for-a не вытаскивается.

понятно

Цитата:
Elroir
Чем тебе не нравится код, который я предложил?

хочется уйти на error до set "backup=%%b\7z.exe"
Автор: Elroir
Дата сообщения: 25.07.2007 14:34
Yuki2003

Код:
for /f "tokens=2*" %%a in ('reg query HKLM\Software\7-Zip /v Path 2^>nul ^| findstr /i Path') do (
if "%%b"=="" (echo Файловый архиватор 7-Zip не установлен>>errors.txt) else (
set "backup=%%b\7z.exe"))
Автор: Yuki2003
Дата сообщения: 25.07.2007 14:45
Elroir
Спасибо! Идею понял, теперь ищу ошибку в твоем последнем коде, чтобы заработало.

Добавлено:
При "правильном" разделе реестра - работает, при "неправильном" - нет
Автор: Elroir
Дата сообщения: 25.07.2007 14:53
Yuki2003
A... нет. извини - так работать не будет. Если записи в реестре нет - то, что внутри скобок do, не будет выполняться. Соответственно и проверки не будет.
Лучше всего в этом случае воспользоваться вариантом KapralBel-а.
Автор: VASTERIKS
Дата сообщения: 25.07.2007 14:55
Доброго времени суток.

Перед тем как написать читал неделю все 3 части... в голове непонятно что

Итак, необходимо с известной папки собрать логи в архив и отправить на известный адрес для обработки!

Все рабочие файлы для этой задачи лежат в папке на флэшке. Флэшка передаётся юзеру, тот запускает один файл и работает себе дальше...

Вот что получилось :

start.bat


Код: @echo off
start rar a -ep1 -y -hp123 arhlog "%programfiles%\prog\logdir\*.txt"
cmd /C send.bat
Автор: Maza Faka
Дата сообщения: 25.07.2007 14:57
Yuki2003

Код:
@echo off
for /f "tokens=2*" %%a in (
'reg query HKLM\Software\7-Zip /v Path 2^>nul ^| findstr /i Path'
) do set backup=%%b\7z.exe
if not defined backup echo Файловый архиватор 7-Zip не установлен>> errors.txt
Автор: Elroir
Дата сообщения: 25.07.2007 14:58
Maza Faka
Я уже понял
А если в переменной backup уже что-то было?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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