Ru-Board.club
← Вернуться в раздел «Программы»

» Командная строка, батники, сценарии (bat, cmd)

Автор: 01MDM
Дата сообщения: 10.05.2009 17:05
mp3exchanger

Цитата:
Пример: 8B CC 83 7A 01 86 8A E4 F0 15 9E 36 ED BE 62 4A fraza

Чуток измени:

Код:

....
echo %string% fraza
....

:string
set /a cnt+=1
if %cnt%==2 set "str=%str% " && set "cnt=0"

set "string=%string%%str%"
for /f "tokens=1 delims==" %%i in ('set sign_') do set "%%i="
Автор: mp3exchanger
Дата сообщения: 10.05.2009 17:31
01MDM, всё прекрасно работает, но, если можно, надо зациклить выполнение до нажатия Esc (или любой клавиши). Не обязательно нажатием на клавишу прерывать, главное зациклить, а прервать я могу и Ctrl-C
Автор: anachrom
Дата сообщения: 10.05.2009 17:37

Цитата:
Про планировщик заданий слыхали?

слыхал, но хочется через батник. что бы постоянно не планировать задания на новых машинах.
Автор: 01MDM
Дата сообщения: 10.05.2009 17:53
mp3exchanger

Цитата:
надо зациклить


На ум приходит только CTRL+C

Код:
@echo off
setlocal

:loop

.....

echo %string% fraza
goto:loop

:: goto:eof
.....
Автор: mp3exchanger
Дата сообщения: 10.05.2009 18:37
01MDM, что то он не так выводит строку после зацикливания, посмотри, пожалуйста ещё раз, что не так
Автор: vchobo
Дата сообщения: 10.05.2009 18:45
01MDM

Цитата:
Узнаем текущий день недели:
wmic path win32_LocalTime get DayOfWeek

Ну ты прямо шаман!
Спасибо, действительно работает
Смотрел справку по wmic, но сходу не понял, надо разобраться


Добавлено:
romrub

Цитата:
эх, святой грааль можно сказать отдаю ...
в папке %systemroot%\help файлик 'ntcmds.chm'
про обраобтку строк есть в теме про команды SET и FOR

Этот файл справки я смотрел, там нет того, что нужно
Во всяком случае в камандах SET и FOR.
Мне нужно описание средств выделения подстроки по позиции, вхождению, n символов справа (слева) и т.п.
Автор: 01MDM
Дата сообщения: 10.05.2009 19:22
mp3exchanger
Sorry. Просто надо обнулить переменную %string%, чтобы в нее записывались только новые данные:

Код:
....
echo %string% fraza
set "string="
goto:loop
....
Автор: mp3exchanger
Дата сообщения: 10.05.2009 19:27
Спасибо, 01MDM, ты настоящий профи.
Автор: romrub
Дата сообщения: 10.05.2009 21:14

Цитата:
01MDM
Цитата:
Узнаем текущий день недели:
wmic path win32_LocalTime get DayOfWeek

а wmic тоже можно было использовать ?
показалось, что только чисто средствами bat-файла и cmd.exe ...
тогда wmic path win32_LocalTime get DayOfWeek /VALUE
поудобней для обработки будет, имхо


Цитата:

Добавлено:romrub
Цитата:
эх, святой грааль можно сказать отдаю ...
в папке %systemroot%\help файлик 'ntcmds.chm'
про обраобтку строк есть в теме про команды SET и FOR

Этот файл справки я смотрел, там нет того, что нужно
Во всяком случае в камандах SET и FOR.
Мне нужно описание средств выделения подстроки по позиции, вхождению, n символов справа (слева) и т.п.

как же нет ? вот по команде SET, в частности

по позиции может и нет, а вот остальное вполне реализуемо.
единственное ограничение - обработке подлежат только set-переменные окружения, т.е. переменные for-а напрямую не получится и надо их переприсвоить ..



Цитата:
Подстановка переменной среды может быть расширена следующим образом:

%PATH:str1=str2%

расширит действие переменной среды PATH, заменяя каждое вхождение "str1" в
расширенном результате на "str2". "str2" может быть пустой строкой для
эффективного удаления вхождений "str1" из расширенного вывода. "str1" может
начинаться со звездочки, и в этом случае это будет соответствовать любому
началу расширенного вывода до первого вхождения оставшейся части "str1".

[more=Остальное здесь]
Можно также использовать строки расширения.

%PATH:~10,5%

расширит действие переменной среды PATH, затем использует только 5
символов, которые начинаются с 11-го символа (пропустив 10) расширенного
результата. Если длина не указана, по умолчанию используется оставшееся
значение переменной. Если оба значения (длина и число пропускаемых символов)
отрицательны, следующим используемым значением будет длина значения переменной
среды, добавленной к указанному значению пропуска или указанной длины.

%PATH:~-10%

извлечет последние 10 символов переменной PATH.

%PATH:~0,-2%

извлечет все символы переменной PATH, за исключением 2-х последних.[/more]
Автор: vchobo
Дата сообщения: 10.05.2009 21:32
romrub


Цитата:
как же нет ? вот по команде SET, в частности
по позиции может и нет, а вот остальное вполне реализуемо.
единственное ограничение - обработке подлежат только set-переменные окружения, т.е. переменные for-а напрямую не получится и надо их переприсвоить ..

Я уже использовал тупо такие преобразования строковых переменных типа:
%переменная:~n,m%
В частности для получения из даты дня, месяца, года.
Просто хотел посмотреть, где это описано в доке.
В описании конанды SET этого не вижу (или мы разные хелпы смотрим)
Автор: romrub
Дата сообщения: 10.05.2009 21:52
vchobo

Цитата:
Просто хотел посмотреть, где это описано в доке.
В описании конанды SET этого не вижу (или мы разные хелпы смотрим)

да, оказывается, ты прав, в файле об этом ни слова
прошу извинить
я то сам взял из встроенной справки - set /?

а по сути - вырезка слева/справа из значения переменной, замена подстроки - работает
Автор: HaK1R
Дата сообщения: 10.05.2009 22:01
anachrom
попробуй через

Код: at /?
Автор: vchobo
Дата сообщения: 10.05.2009 22:17
romrub


Цитата:
прошу извинить
я то сам взял из встроенной справки - set /?

а по сути - вырезка слева/справа из значения переменной, замена подстроки - работает

Хорошо подколол
Там по set /? еще много чего полезного откопал, например !переменная!
Автор: romrub
Дата сообщения: 10.05.2009 22:26
vchobo

Цитата:
Хорошо подколол
Там по set /? еще много чего полезного откопал, например !переменная!


я тоже ключом /? далеко не сразу пользуюсь, чаще пытаюсь в гугле найти ...
Автор: timka85
Дата сообщения: 10.05.2009 23:08
Привет! Нужен батник:
1. С флешки, из папки \HideOut , где расположен сам батник и разные папки с файлами должна перемещаться выбранная по алфавиту папка в аналогичную папку по пути C:\Moved\ . Примерно должно выглядеть так: I:\HideOut\Folder_1 --> C:\Moved\Folder_1\Folder_1 .
2. В папке с именем, которое было взято ранее (пункт 1 - прим. C:\Moved\Folder_1) запускается файл Commander.exe .
3. Перемещение папки C:\Moved\Folder_1\Folder_1 (как пример) обратно на флешку в папку \HideOut.

Важно!!!
a) имя папки Folder_1 - это лишь пример выбранной по алфавиту папки из списка всех папок в каталоге с БАТником.
б) буква драйва для съемного носителя непостоянна.
Автор: HaK1R
Дата сообщения: 11.05.2009 00:17
timka85
Попробуй так

Код:
@echo off
for /f "tokens=*" %%a in ('dir /ad /b /on') do (
move "%%a" "C:\Moved\%%~nxa"
start "" /wait "C:\Moved\%%~nxa\Commander.exe"
move "C:\Moved\%%~nxa" "%%a"
)
Автор: fristfrist
Дата сообщения: 11.05.2009 08:38
в чем суть: меняю мак на сетевой карте и мне нужно выключить и включить сетевую карту. как это сделать батником?
т.е. локальное подключение, может нужно всего на всего какую-то службу перегрузить?
WinXP SP3
Автор: anachrom
Дата сообщения: 11.05.2009 08:43
HaK1R
Вот хоца, что бы не по планировщику, а просто "если то"
Автор: 01MDM
Дата сообщения: 11.05.2009 08:49
fristfrist
Для в(ы)ключения сетевой карты пользуюсь утилитой cnic.exe

http://download.microsoft.com/download/f/d/0/fd05def7-68a1-4f71-8546-25c359cc0842/TechniquesForSimp2006_05.exe

Перезагрузка сетевой карты будет выглядеть так:

Код:
cnic "Название подключения" -d
cnic "Название подключения" -c
Автор: fristfrist
Дата сообщения: 11.05.2009 09:01
2 01MDM, сп, скачал
но все таки хотелоть батником или я правильно понял, что нельзя это сделать, тогда можно гденибудь достать исходные данного приложения?
Автор: romrub
Дата сообщения: 11.05.2009 09:34
fristfrist

Цитата:
но все таки хотелоть батником


а в чем цель именно включения/выключения ?
может достаточно будет просто заново получить ip-адрес ? ipconfig <адаптер> /renew

ipconfig.exe конечно не bat-команда, но в составе любой windows есть всегда

также может будут интересны arp.exe и netsh.exe ?
Автор: slech
Дата сообщения: 11.05.2009 09:39
есть ещё один вопросик
есть текстовый файл в котором только одна строка
DB_Date.bak
как её заменить на
DBIntermediate_Date.bak
т.е получается поменять первые 2 символа на новые 14
Автор: 01MDM
Дата сообщения: 11.05.2009 11:16
slech
Заменить строку в файле?
Просто переписать этот файл, раз он с одной строкой

Код:
DBIntermediate_Date.bak 1>file.txt
Автор: slech
Дата сообщения: 11.05.2009 12:05
01MDM
мне важно оставить концовку строки
DBIntermediate_Date.bak
Автор: 01MDM
Дата сообщения: 11.05.2009 13:12
slech

Цитата:
мне важно оставить концовку строки


Код:
@echo off
set /p name=<file.txt
echo %name:DB=DBIntermediate% 1>file.txt
Автор: timka85
Дата сообщения: 11.05.2009 15:04
HaK1R
есть ошибка. Сообщается об отказе в доступе. Затем папка с флешки не перемещается, а запускается сразу Commander.exe . При закрытии Commander.exe ничего обратно во флешку не перемещается.


Цитата:
и как я понял два раза папку Folder_1 не надо делать

нет, нужно именно такое расположение. Потому что в папке C:\Moved\Folder_1 находится Commander.exe и рядом такая же папка Folder_1, а в ней уже всякие там файлы.

Нужна доработка. Спрашивайте все что хотите.
Автор: Yoldosh
Дата сообщения: 11.05.2009 15:52
Ребьята если не сложна подскажите как зделать так штобы батник распоковал архив .7z
надо штобы батник распаковал архив вту самую директорию где находитсья батник
Заранее спаибо за помощь !!!
Автор: 01MDM
Дата сообщения: 11.05.2009 15:52
timka85

Цитата:
Сообщается об отказе в доступе.


Это происходит потому, что команда `move` не умеет перемещать папку между разными логическими дисками. Только файлы. Используй `xcopy` и `rd` (если надо удалить исходную папку)

Поясни, что значит выбранная по алфавиту папка
Если правильно понял, то тебе нужно:

Код:
@echo off
setlocal

pushd "%~dp0"

for /d %%i in (*) do call:set "%%i"

for /f "tokens=2,3 delims=_=" %%i in ('set folder_') do echo [%%i] %%j
echo ----
set /p choice="> "

for /f "tokens=2 delims==" %%i in ('set folder_%choice%') do (
set "folder=%%i"
xcopy /e /q "%%i" "C:\Moved\%%i\%%i\"
rd /s /q "%%i"
)

start /wait "" "C:\Moved\%folder%\%folder%\commander.exe"

xcopy /e /q "C:\Moved\%folder%\%folder%" ".\%folder%\"
rd /s /q "C:\Moved\%folder%"

popd
goto:eof

:set
set /a cnt+=1
set "folder_%cnt%=%~1"
Автор: Ortios
Дата сообщения: 11.05.2009 18:23
Кто знает как узнать количество символов в переменной?
Например, есть файл, в нем три строки:

Цитата:
Odin
Dva
200995

Предположим, что каждая строка загоняется в переменную. Как узнать, что первый раз в переменной 4 символа, второй раз 3 символа и в третий раз 6 символов?
Автор: 01MDM
Дата сообщения: 11.05.2009 19:45
Ortios
1.вариант

Код:
@echo off
setlocal enabledelayedexpansion

for /f "tokens=*" %%i in (1.txt) do set var=%%i && call:cnt
goto:eof

:cnt
set /a cnt+=1
if not "!var:~%cnt%!"=="" goto:cnt
set /a cnt-=1
echo %cnt%

set "cnt="

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: SAS.Планета (часть 2)


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