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

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

Автор: Ortios
Дата сообщения: 09.12.2009 12:45
CTACKo

Цитата:
Подскажите, кто знает, как с помощью |more можно нажать ентер?
Когда-то очень давно в печатной периодике видел пример командника, но не помню и найти нигде не могу. Суть в том что в команднике запускается некая программа и она дальше ничего не делает пока ей тупо не нажмешь ентер. И был показан пример командной строки для такого случая с использованием |more в котором ентер какбы "сам нажимался" благодаря некоей хитрости работы more.

В одной из книг Б.Богумирского о MS-DOS году этак в 1995 я встречал упоминание о трюке позволявшем нажимать Enter. Точно не помню что и как, но говорилось по-моему о такой конструкции:
Если в батнике просто написать Time > file.txt, то он просто зависнет ожидая ввода времени. А если использовать констукцию echo | more | time | find /v "Enter", то сэмулируется нажатие Enter и выполнение батника пойдет дальше. Самого батника вспомнить сейчас не могу, но работало все четко. До самой книжки доберусь не раньше чем через неделю, когда выйду на работу.
Автор: yurkesha
Дата сообщения: 09.12.2009 13:10
FGHGJGJSD22
по поводу задачи на запуск нужное число раз - ее наверное проще реализовать так
Код: @ECHO OFF
IF "%1"=="" (SET /a "CNT=0") ELSE (SET /a "CNT=%~1")
IF %CNT% LEQ 0 EXIT
FOR /L %%i IN (1,1,%CNT%) DO (START notepad.exe)
EXIT
Автор: Altus
Дата сообщения: 09.12.2009 13:38
Ortios
Если я правильно понимаю, то "ентер"(перевод строки) получается от ответа команды "echo".
Потому с той же эффективностью будет работать например: "time /t | time > file.txt", или "echo on | time > file.txt", или "echo off | time > file.txt"
Автор: Ortios
Дата сообщения: 09.12.2009 14:12
Altus
Правильно понимаешь . Просто эта конструкция echo | more | time | find /v "Enter" мне запомнилась и привел я ее без учета контекста.
Автор: alers
Дата сообщения: 09.12.2009 14:56
Подскажите, можно ли как нибудь к файлу png.txt, в который записываются пинги по команде ping X.X.X.X -t >png.txt, добавлять текущее время в начало или конец строки
ну чтобы было как то так:
Time Ответ от X.X.X.X: число байт=32 время=11мс TTL=253♪
или
Ответ от X.X.X.X: число байт=32 время=20мс TTL=253 Time
Автор: dskj
Дата сообщения: 09.12.2009 15:25
Подскажите как можно задать уже в командной строке то что хочу скопироватьи возможно ли такое? Например

Код: C:\> copyall.bat test
Автор: FGHGJGJSD22
Дата сообщения: 09.12.2009 18:58
yurkesha

некак опять... мне бы полный сразу код... с ифами вообще потерялся...сам не сделаю...
допуситм тело батника = START notepad.exe
надо сделать чтоб батник запускался 5 раз...
люди помогите))))))))))
Автор: yurkesha
Дата сообщения: 09.12.2009 20:26
FGHGJGJSD22
Я написал полный код который запускает notepad.exe нужное число раз. Если параметр не указан или параметр не числовой то он считается равным нулю.
Автор: 01MDM
Дата сообщения: 09.12.2009 21:02
yurkesha,

Вопрос FGHGJGJSD22 заключался в запуске батника (что я и предоставил), а не выполнения задачи в одном батнике определенное кол-во раз.
К сожалению он ничего не знает про переменные среды.

FGHGJGJSD22
Помести батник в один из каталогов, указанных в переменной %PATH% (echo %PATH% выручит). И запускай из командной строки:

Код:
C:\> название_батника число
Автор: yurkesha
Дата сообщения: 09.12.2009 21:10
01MDM
Не вопрос!
Только поменяй (cmd /b /c %0 %cnt%) на (cmd /b /c "%~0" %cnt%)
Да и проверку на наличие первого параметра надоть. Ну и заодно убедиться что параметр - число...
Автор: 01MDM
Дата сообщения: 09.12.2009 21:24
yurkesha

Цитата:
Да и проверку на наличие первого параметра надоть. Ну и заодно убедиться что параметр - число...

Этот вопрос не задавался.

Не понял для чего %0 на "%~0". Если в названии батника пробелы, то он запустится только в кавычках, значит и значение %0 будет таким же (с кавычками). А если мышью, то %0 сам заменится на "%~f0"

Автор: FGHGJGJSD22
Дата сообщения: 09.12.2009 23:17
01MDM

echo %PATH%
ввожу в ком строке - выдает папки -
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\ABTools
ложу батник с кодом(причем батник если по нему кликаешь-блокно запускает все ок)

---------
@echo off
setlocal
set /a "cnt=%1-1"
::
START notepad.exe
chcp 1251 1>nul
msg * "Проверка %cnt%"
::
if %cnt% leq 0 (goto:eof) else (cmd /b /c %0 %cnt%)
----------
в любую из вышеперичисленных в ком строке папок( во все ложил)
пример -
C:\Program Files\ABTools\proba.bat

ввожу в меню пуск - выполнить -
C:\>proba.bat 3
вылетает окно неудалось найти и.тд...
ввыжу в ком строке START C:\>proba.bat 3
открывается диск С а батник не запускается....
где и в чем ошибка у меня может быть???
Автор: yurkesha
Дата сообщения: 10.12.2009 08:38
FGHGJGJSD22
положи для начала в корень диска C: и проверь.
Автор: dskj
Дата сообщения: 10.12.2009 08:39
FGHGJGJSD22
У тебя батник лежит в C:\Program Files\ABTools\proba.bat . А запускаешь C:\>proba.bat 3 у тебя пути разные, либо proba.bat перенеси в c:\ или укажи так "C:\Program Files\ABTools\proba.bat"

Автор: qwerty355
Дата сообщения: 10.12.2009 10:25
Добрый день, как осуществить поиск в теле ветки?
Автор: FGHGJGJSD22
Дата сообщения: 10.12.2009 14:03
Все запустил !!! просто в меню пуск выполнить ввел C:\WINDOWS\proba.cmd 3
Спасибо всем Большое !!!
Автор: 01MDM
Дата сообщения: 10.12.2009 19:29
FGHGJGJSD22

Цитата:
просто в меню пуск выполнить

Так тебе надо в меню "Выполнить" или в командной строке? Если в "Выполнить", то

Код:
cmd /c proba 5
Автор: Slonevg
Дата сообщения: 12.12.2009 00:53
Чем заменить пробелы в пути? Например "C:\Program Files\Virus Removal Tool\AVPTool\bases\"
Автор: 01MDM
Дата сообщения: 12.12.2009 13:03
Slonevg
Зачем?
Автор: Slonevg
Дата сообщения: 12.12.2009 19:27
01MDM
Сорри, разобрался, просто хотел так базы обновить, удаляю пробелы создает папки заново. А прочитать не дошло Сделал паузу там просто доступа нет.
Автор: FGHGJGJSD22
Дата сообщения: 13.12.2009 00:19
01MDM
Приветствую,Хороший человек.
Команды из ком строки с аргументом у меня так и не пошли..
уже и файлы ложил в папки указанные в пут...что только не длал вообщем...
и из выполнить как ты написал - тоже неидет...прям мистика какая то...
а вот как я написал - тоесть - просто указан путь файл и аргумент(число) через пробел
- все запускается нормально...ну лад запускается и запускается мне достаточно
- просто интересно почему как ты сказал не идет...

но сегодня хотел другой вопрос задать -

есть 2 текстовых файла
rez1.txt в нем строка 11111111 и tmp1.txt в нем строка 222222
нужно добавить содержимое tmp1.txt
в rez1.txt - ПОСТРОЧНО...
делаю батник -
-----
@echo off
setlocal
pushd D:\
copy rez1.txt+tmp1.txt
popd
---
все добавляет - НО текст получается не

11111111
222222 а

11111111
222222
222222
222222
222222
222222


тоесть там где оставляю курсор в конечном файле плучается кубик )!!!!

 вот он

как этого избежать .. или потом все кубики удалить другим батником...
лучше конечно чтоб сразу записывался нормально !
кто то может подсказать ?
пс.надо именно добовлять в rez1.txt а не складывать все в третий...
Автор: 01MDM
Дата сообщения: 13.12.2009 11:47
FGHGJGJSD22

Цитата:
Команды из ком строки с аргументом у меня так и не пошли..

Может расскажешь последовательность действий?

Цитата:
но сегодня хотел другой вопрос задать

Если надо добавить содержимое одного файла в другой воспользуйся командой 'type':

Код:
1>>rez1.txt type tmp1.txt
Автор: FGHGJGJSD22
Дата сообщения: 13.12.2009 14:37
01MDM
открываю ком строку (черное окошко с названием ком строка)
в нем пишется
Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

C:\Documents and Settings\111>

потом смотрю какие папки у меня добавлены в echo %PATH%
Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

C:\Documents and Settings\111>echo %PATH%
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\system32\Wind
owsPowerShell\v1.0

ложу батник в папку C:\WINDOWS

ввожу тут же ( в ком строке) C:\> proba 5
пишет

C:\Documents and Settings\111>C:\> proba 5
"C:\" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

ну и не запускается разумеется...
Автор: yurkesha
Дата сообщения: 13.12.2009 14:56
FGHGJGJSD22
C:\> proba 5 - это четкое указание запустить(?!) файл C:\ и перенаправить его вывод в файл proba находящийся в текущей папке... Так как такого файла нет то у тебя в текущей папке должен создаваться пустой файл proba
Хочешь чтобы подхватывалось из путей запускай без указания диска: proba 5.
Вобщем харе троллить...
Автор: FGHGJGJSD22
Дата сообщения: 13.12.2009 15:12
yurkesha
да чет тупанул конкретно...спасибо за разьяснения-все пошло!

01MDM
спасибо-содержимое построчно добавляется - все ок..

а вот по столбцам наверно из ком строки не сложить ? тоесть допусим
в 1 файле
столбец
1
1
во втором
2
2
надо сложить с разделителем ;(точка с запт к примеру) чтоб получилось
1;2
1;2
но если допустим в первом файле столбец больше(строк в столбце)
то зпт бы на первом продолжались... тоесть так -
1;2
1;2
1;
1;
это как вообще рельно ?
Автор: ZolotnikOV
Дата сообщения: 13.12.2009 20:21

Код: IF EXIST файл х (
команда 1
команда 2
команда 3

chcp 1251 1>nul
@ dir /b /a "папка х" | 1>nul findstr "." || msg %username% "Успешно установлено !!! "
) ELSE (
@echo off
echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js
echo WSHShell.Popup("Не установлено"); >> %temp%\mes.js
start %temp%\mes.js
)
Автор: scorpiorxx
Дата сообщения: 14.12.2009 09:04
Привет всем! Кому не жалка помогите пожалуйста! Устал делать все руками!
Вообщем есть каталог, в каталоге много подкаталогов, в которых файлы *.xls, нада скинуть самый большой файл (ну если не получается самый большой, то все) на сетевой диск Н, и переименовать его в название каталога и дату создания файла, а забыл дописать чтоб в этом подкаталоге удалить все файлы после Хелп....а там таких файликов штук 300-400

Например: garant_081209.xls Спасибо большое заранее!!

Примерный батник: Тока он кидает самый первый файлик, а нада все или самый большой

Все сделал...глядите мож кому понадобится

@echo off
cls

set price_dir=c:\
set price_name=*.xls
set dest_price_dir=t:\
set dest_price_ext=*.xls

echo Поиск в каталоге: %price_dir%
for /d %%x in (%price_dir%*) do call rocess %%~nx

goto :EOF


rocess
set /a i=1
set clnt=%1
echo Клиент: %clnt%
for %%y in (%price_dir%%clnt%\%price_name%) do (
call rocess2 %%y %%~ty
set /a i=i+1)
goto :EOF

rocess2
set file_date=%2
set file_name=%1
set new_file_name=%file_date:~6,4%%file_date:~3,2%%file_date:~0,2%_%clnt%%i%
:echo %file_name%
:echo %new_file_name%

ause
copy /B /Y %file_name% %dest_price_dir%%new_file_name%%dest_price_ext%
del /Q %file_name%
goto :EOF
Автор: alexmskinb
Дата сообщения: 15.12.2009 16:13
помогите написать батник для выполнения следующей задачи.

есть программа скажем 1.exe которая при запуске через командную строку выводит на экран
нужную информацию (строчку с именем) из файла test.pdf

как написать батник , что бы при его запуске файл test.pdf переименовывался согласно выводимому имени . к примеру полученные данные из test.pdf будут sawe1 и файл переименовывается в sawe.pdf

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



ХЕЛП!!!
Автор: analfabet
Дата сообщения: 18.12.2009 15:23
DA
Автор: Deep2007
Дата сообщения: 18.12.2009 16:02
Вроде видел где то на этом форуме, если что - не бейте ногами. Вопрос такой - как (и можно ли) в CMD издать звук через системный динамик?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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