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

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

Автор: FuZz21
Дата сообщения: 17.01.2007 13:23
yurkesha

А по поводу моей проблемы ответов нет???
Автор: RaZer
Дата сообщения: 17.01.2007 13:31
FuZz21
Внимательнее смотри шапку: Пример выполнения команд по результату команды ping
Автор: FuZz21
Дата сообщения: 17.01.2007 13:34
RaZer

sorry но я вообще не одубляю как это напсанно!

Если не сложно? то можете мне написпать как именно надо!

IF (ping = true)

PLZ HELP ME!
Автор: RaZer
Дата сообщения: 17.01.2007 13:46
FuZz21
Для начала выполняется команда ping

Код: Ping -n 1 xxx.xxx.xxx.xxx
Автор: regular
Дата сообщения: 17.01.2007 14:00
yurkesha,
оказывется в скрипте со статьи была ошибочка.
Правильно нужно писать так:
del /f /q /s /p X:\*.mp3
Автор: yurkesha
Дата сообщения: 17.01.2007 14:18
Тогда будут обработаны только файлы по маске *.mp3 находящиеся в корне X:
Автор: regular
Дата сообщения: 17.01.2007 14:22
yurkesha, не правда. Ключ /s означает рекурсию
Автор: Elroir
Дата сообщения: 17.01.2007 18:26
AZJIO

Цитата:
attrib -s -h C:\boot.ini почему то перестал работать

Попробуй запустить эту команду не из батника, а руками из командной строки - посмотри что происходит.

regular

Цитата:
И еще не всегда понятно при каких значениях переменной n в выражении !fname:~m,-n! начинается удаление последних символов. Иногда это происходит при n=2 иногда при n=3... Почему такое происходит?

В строчке "set fname=%%I", удали пробел после буквы I. И вообще удали все пробелы в конце строк батника. Именно из-за этого пробела у тебя прыгают цифры (n=2,n=3).

GreaseOD1

Цитата:
Нужно сделать проверку %5. Если он не задан, то выполнять как обычно


Код:
if not "%5"=="" goto special
:: Твой код
goto :EOF
:special
:: Выполняется, если задан 5-й аргумент
Автор: AZJIO
Дата сообщения: 17.01.2007 22:07
Elroir

Цитата:
Попробуй запустить эту команду не из батника, а руками из командной строки - посмотри что происходит.

Попробовал, тоже самое. Файл только для чтения - этот атрибут нужно снять, а снимается только "Скрытый".
Автор: Elroir
Дата сообщения: 17.01.2007 23:45
AZJIO

Цитата:
Файл только для чтения - этот атрибут нужно снять, а снимается только "Скрытый".

А почитать справку по команде attrib?

Код: attrib -r -h -s c:\boot.ini
Автор: StanislavG
Дата сообщения: 18.01.2007 09:00
Elroir
У меня есть вопрос вот кусок лога:

arj a c:\tcpfoss.452\jnin\jour01.arj c:\tcpfoss.452\"02421805.RTF"

А вот как это выглядет в батнике:

@echo off
setlocal
set dt=%date%
FOR %%I IN (*.old,*.rsa,*.ind,*.key,*.pud,*.rsa,*.lo1,*.er1,*.err,*.nbu,*.pub,*.new,*.log) DO call :finddate "%%I" %dt:~0,2% %dt:~3,2% %dt:~6,4%

goto :EOF

:finddate
for /F "usebackq tokens=1,2,3,4 delims=. " %%A IN (`"dir /T:C %1 | find %1"`) DO call :test %%A %%B %%C %1 %2 %3 %4
goto :EOF

:test
rem File's date
set fd=%1
set fm=%2
set fy=%3
rem Current date
set curd=%5
set curm=%6
set cury=%7
set /a prevd=%curd%-1
set prevm=%curm%
set prevy=%cury%
set prevye=%cury%
if %curm%==12 (set prevme=11& set days=30)
if %curm%==11 (set prevme=10& set days=31)
if %curm%==10 ( set prevme=09& set days=30)
if %curm%==09 ( set prevme=08& set days=31)
if %curm%==08 ( set prevme=07& set days=31)
if %curm%==07 ( set prevme=06& set days=30)
if %curm%==06 ( set prevme=05& set days=31)
if %curm%==05 ( set prevme=04& set days=30)
if %curm%==04 ( set prevme=03& set days=31)
if %curm%==03 ( set prevme=02& set days=28)
if %curm%==02 ( set prevme=01& set days=31)
if %curm%==01 ( set prevme=12& set days=31& set /a prevye=%prevy%-1)
if %prevd% LEQ 0 (
set /a prevd=%days%+%prevd%
set prevm=%prevme%
set prevy=%prevye%)
set match=true
if not "%fd%"=="%prevd%" ( set match=false)
if not "%fm%"=="%prevm%" ( set match=false)
if not "%fy%"=="%prevy%" ( set match=false)
if "%match%"=="true" (

arj a c:\tcpfoss.452\jnin\jour%prevm%.arj c:\tcpfoss.452\%4
)

Вопрос такой как можно убрать кавычки в строке архиватора в этом эпизоде

c:\tcpfoss.452\"02421805.RTF"

т.к. архиватор не архивирует
Автор: JohnRD
Дата сообщения: 18.01.2007 09:27
всем добрый день/вечер

подскажите пожалуйста как продолжить выполненние CMD
есть необходимость обновить клиента SMS, а именно удалить и установить поновой
1.cmd

Код: start /wait \\smssrv\smsclient\i386\ccmclean.exe /client /q
\\smssrv\smsclient\i386\ccmsetup /source:\\smssrv\smsclient\i386 smssitecode=hd1
Автор: rinrintaru
Дата сообщения: 18.01.2007 12:52
Народ, здесь уже было обсуждение, но как-то у меня не получилось. Можно ликбез для блондинок?
Проблема с путями или с синтаксисом. Нужно запустить exe из Program Files. Ну например totalcmd
set проверила, пишет:
ProgramFiles=I:\Program files

пишу
start %Program files%\totalcmd\totalcmd.exe

пишет
Windows не удалось найти 'I:\Program'

Читала, что надо кавычки ставить, только не понимаю, что именно надо ставить в кавычки- весь путь или только ту часть, которая с пробелами. Попробовала с помощью set поставить и так, и так, но результат тот же - не удалось найти

Помогите, плиз!

И еще вопрос: имеют ли значение для синтаксиса bat строчные и прописные буквы? Пока стараюсь соблюдать точность написания, но геморройно это

Автор: the13th
Дата сообщения: 18.01.2007 13:04
rinrintaru
В кавычки заключается полный путь.
Регистр букв значения не имеет.

Путь к Program files задаётся переменной %ProgramFiles% (без пробела).
Автор: yurkesha
Дата сообщения: 18.01.2007 13:18
Только работать будет вот так:
Код: start /D"%Programfiles%\totalcmd" totalcmd.exe
Автор: rinrintaru
Дата сообщения: 18.01.2007 13:39
start /D"%Programfiles%\totalcmd" totalcmd.exe
не работает

%ProgramFiles%
не работает
в переменных стоит ProgramFiles=I:\Program files
при запуске %ProgramFiles%\... пишет "Не найдено 'I:\Program'

Как переменные изменить?
set ProgramFiles=I:\"Program files" помогает, но через какое-то время в переменных снова появляется ProgramFiles=I:\Program files
Автор: yurkesha
Дата сообщения: 18.01.2007 14:00
Что значит не работает?
Файл I:\Program files\totalcmd\totalcmd.exe существует?
И проверяешь как? Меню Пуск - выполнить - так работать не будет...
Эта конструкция используется только внутри пакетных файлов - то есть с расширением bat или cmd
Автор: evgeni666
Дата сообщения: 18.01.2007 14:03
rinrintaru
start "%Programfiles%\totalcmd\totalcmd.exe"
так попробуй запускать
Автор: rinrintaru
Дата сообщения: 18.01.2007 14:18

Цитата:

Что значит не работает?
Файл I:\Program files\totalcmd\totalcmd.exe существует?
И проверяешь как? Меню Пуск - выполнить - так работать не будет...
Эта конструкция используется только внутри пакетных файлов - то есть с расширением bat или cmd



существует
копирую строку в txt, сохраняю как bat, запускаю
пишет F:\Мои документы\TOTALCMD.exe не является приложением Win32
F:\Мои документы\ - папка, где лежит bat


Цитата:


start "%Programfiles%\totalcmd\totalcmd.exe"


выдает консоль, в ней
F:\Мои документы>

и все!

Может, как-то переменные изменить?
Автор: Nagual
Дата сообщения: 18.01.2007 14:22
yurkesha
имхо после ключа надо ставить пробел, иначе система не определит где ключ а где путь
так что, rinrintaru, вот так пускай
Код: start "" "%Programfiles%\totalcmd\totalcmd.exe"
Автор: yurkesha
Дата сообщения: 18.01.2007 14:28
Nagual
Я таки наверное проверил перед тем как писать
Проверь и ты...

rinrintaru
тогда результат выполнения команды
Код: set prog
Автор: rinrintaru
Дата сообщения: 18.01.2007 14:39

Цитата:

start "" "%Programfiles%\totalcmd\totalcmd.exe"


Заработало!!!! Сенкс

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

ЗЫ Самое обидное, что из консоли оно без проблем запускается - хоть с кавычками, хоть без, хоть с "start", хоть без "start"... А из bat и cmd с такими вот приколами

Добавлено:


Цитата:
тогда результат выполнения команды
Код:
set prog
в студию...


ProgramFiles=I:\"Program files"
Автор: yurkesha
Дата сообщения: 18.01.2007 14:44
Если уж так тяжело набрать start /? то вот результат выполнения: [more]Запуск указанной программы или команды в отдельном окне.

START ["заголовок"] [/Dпуть] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME| /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/B]
[команда/программа] [параметры]

"заголовок" Заголовок окна.
путь Рабочий каталог.
B Запуск приложения без создания нового окна с отключением
обработки сочетания клавиш ^C. Если приложение не
обрабатывает сочетание клавиш ^C самостоятельно,
единственным способом его прерывания является
использование сочетания клавиш ^Break.
I Новой средой станет исходная среда, переданная
cmd.exe, а не текущая среда.
MIN Запуск команды/программы в свернутом окне.
MAX Запуск команды/программы в развернутом окне.
SEPARATE Запуск 16-разрядной программы Windows в отдельной
области памяти.
SHARED Запуск 16-разрядной программы Windows в общей
области памяти.
LOW Запуск приложения с приоритетом IDLE.
NORMAL Запуск приложения с приоритетом NORMAL.
HIGH Запуск приложения с приоритетом HIGH.
REALTIME Запуск приложения с приоритетом REALTIME.
WAIT Запуск приложения с ожиданием его завершения.
ABOVENORMAL Запуск приложения с классом приоритета ABOVENORMAL
BELOWNORMAL Запуск приложения с классом приоритета BELOWNORMAL
команда/программа
Если это внутренняя команда cmd.exe или пакетный файл,
обработчик команд (cmd.exe) запускается с ключом /K.
Это означает, что окно не будет закрыто после завершения
команды.

Если это не внутренняя команда cmd.exe и не пакетный файл,
значит, это программа, которая будет запущена в графическом
или текстовом окне.

параметры Параметры, передаваемые команде/программе.


Изменения вызова внешних команд из командной строки или с помощью команды
START при включении расширенной обработки команд:

Для вызова неисполняемых файлов через механизм сопоставления типов файлов
достаточно просто ввести имя файла в командной строке. Например, команда
WORD.DOC запускает приложение, сопоставленное расширению имени файла .DOC.
Сведения о создании подобных сопоставлений из пакетных файлов приведены
в описаниях команд ASSOC и FTYPE.

При запуске 32-разрядного приложения с графическим интерфейсом пользователя
обработчик команд CMD.EXE не ожидает завершения работы приложения перед
возвратом к приглашению командной строки. Подобное новое поведение НЕ
относится к запуску приложений из пакетных файлов.

При выполнении командной строки, первым элементом которой является текстовая
строка "CMD" без расширения имени файла или указания пути, она заменяется
значением переменной COMSPEC. Это предотвращает запуск CMD.EXE из
текущей активной папки, если таковая программа там имеется.

Если первый элемент командной строки не содержит расширения имени файла,
обработчик команд CMD.EXE использует значение переменной среды PATHEXT,
чтобы определить расширения имен исполняемых файлов и порядок поиска
нужного файла. По умолчанию для переменной PATHEXT задается
значение:

.COM;.EXE;.BAT;.CMD

Обратите внимание, что этот синтаксис подобен синтаксису для переменной
PATH, то есть отдельные элементы разделяются точкой с запятой.

Если при поиске исполняемого файла нет соответствия ни одному из расширений,
выполняется проверка соответствия указанного имени папки. Если имя папки
соответствует указанному, то команда START запускает EXPLORER для этого
пути. Если такое действие выполняется из командной строки, то оно
эквивалентно выполнению команды CD /D для указанного пути.
[/more]

А вот генерация хелпов по всем командам консоли: [more]
Код: FOR /F "usebackq tokens=1 eol= skip=1 delims= " %%a IN (`help^|findstr /B /V /C:" "`) DO help %%a >>%%a.txt
Автор: rinrintaru
Дата сообщения: 18.01.2007 15:08

Цитата:

Если уж так тяжело набрать start /?


Ну неужели думаете, что не читала? Еще до того, как этот форум нашла, пыталась сама разобраться. Только вот где там сказано, почему вроде бы правильно набранный путь, обращающийся к переменным винды, имеющим в своем значении пробелы, не будет запускаться?
Автор: yurkesha
Дата сообщения: 18.01.2007 15:44
cmd /? - почти в самом конце... Это общесистемная фича...
Автор: Elroir
Дата сообщения: 18.01.2007 21:01
StanislavG

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


Код: arj a c:\tcpfoss.452\jnin\jour%prevm%.arj c:\tcpfoss.452\%~4
Автор: Higher
Дата сообщения: 18.01.2007 22:36
Извините за банальность, но трудно написать правильный запрос, от чего не найти желаемого.

нужен простейший bat, который может заменять символы в файлах на другие символы, с учётом того, что файлов много (сразу все, а не каждый по отдельности):

например 1_-_2.mp3
вместо _ необходим пробел

можно ли сделать автоматизацию для всех файлов сразу, скажем, если все они будут в одной папке?

Спасибо.
Автор: Elroir
Дата сообщения: 18.01.2007 23:12
Higher

Цитата:
например 1_-_2.mp3
вместо _ необходим пробел


Код:
@echo off
setlocal enabledelayedexpansion
for %%A in (*.*) do (
set name=%%~nA
set name=!name:_= !
ren "%%A" "!name!%%~xA"
)
Автор: rinrintaru
Дата сообщения: 19.01.2007 01:09
Спасибо всем, кто откликнулся! Меня в большей степени сбило то, что я все команды проверяла в консоли. В консоли работают, а из файла нет. Поэтому я грешила в бОльшей степени на путь (запуск идет с разных системных дисков, а запускаемый файл на том же, откуда запускается консоль), либо уже полностью начиналось обострение тупости
Автор: Strange
Дата сообщения: 19.01.2007 11:44
Требуется синхронизация подпапок и файлов с сетевого диска на локальную машину. Можно ли как-то решить эту проблему? или заставить xcopy не перезаписывать имеющиеся файлы?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Сбой активации XP sp2


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