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

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

Автор: Ysan
Дата сообщения: 28.05.2007 07:51
Maza Faka
да, ошибочку сделала, сейчас работает )

Добавлено:
есть txt файл:
фамилия1-1
фамилия2-2
...
фамилияN-N

как можно построчно его просматривать, запоминать символы после -, и создавать каталог с именем из символов после - ?
Автор: Maza Faka
Дата сообщения: 28.05.2007 08:20
Ysan
В начало файла:
Вводим код

Код:
copy con+file.txt tmp.txt
Автор: Ysan
Дата сообщения: 28.05.2007 16:15
Maza Faka
отлично получается!
но еще после каждого просмотра строки файла list.txt нужно спрашивать:
копировать юзеру Фамилия1 файл (задать имя файла как параметр) в созданный каталог 1?
и если Да - то копировать, если нет - также спросить для Фамилия2 и т.д.
Это можно?
Если и эту задачку сдам - с меня причитается!
Автор: Maza Faka
Дата сообщения: 28.05.2007 18:11
Ysan

Код:
@echo off
chcp 1251
setlocal enabledelayedexpansion
if "%1"=="" goto help
for /f "delims=- tokens=1,2" %%a in (list.txt) do (
md "%%b"
set /p choose=Copy %1 to user %%a? [Y]=Yes [N]=No [C]=Cancel
if /i !choose!==y copy %1 "%%b")
goto :eof
:help
echo Syntax %0 file
Автор: Ysan
Дата сообщения: 29.05.2007 02:25
Maza Faka
интересно получается: из под винды запускаю-работает идеально!
а если из под дос (установила в WMware dos 6.2)-сплошные ошибки .
Большое Спасибо За Помощь!
Автор: euheny
Дата сообщения: 29.05.2007 03:34
Как бы сделать так , чтобы 7z выводил свою деятельность как в консоль так и в лог файл ?

Ysan
У FreeDos ошибок должно быть меньше , а может и вовсе не будет.
Автор: Elroir
Дата сообщения: 29.05.2007 03:43
euheny
Посмотри в шапке, в "Полезных утилитах" - утилита mtee.

Ysan
Dos 6.2 (да и следующие, встроенные в Win9X) просто не поддерживает синтаксис команд консоли WinXP.
Автор: euheny
Дата сообщения: 29.05.2007 11:31
Elroir
Значит получается без доп бинарников нельзя.Интересно - ещё один баг комстроки.
Автор: KapralBel
Дата сообщения: 29.05.2007 11:57
euheny
А почему баг?
Автор: NIKZZZZ
Дата сообщения: 29.05.2007 12:45
euheny

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


Цитата:
Баг (англ. bug — жук) — жаргонное слово, обозначающее ошибку в программе.

Командная строка предназначена исключительно для того, чтобы запустить "бинарник" и передать ему нужные параметры, что и она с успехом делает. А вот выражение "без доп бинарников" - можно вполне отнести к категории, сродной багам.
Автор: saturnatu
Дата сообщения: 29.05.2007 13:01
Доброго дня !
Как с помощью батника узнать о наличии нового файла в каталоге.
Автор: Maza Faka
Дата сообщения: 29.05.2007 13:40
saturnatu

Цитата:
Как с помощью батника узнать о наличии нового файла в каталоге

Нового по дате, или по появлению в каталоге?
Если по появлению, то можно так:
создать список с имеющимися файлами, а спустя определённое время, сравнивать.
В директории которую нужно проверять запускаешь батник с этим кодом один раз, что бы создать список файлов, а затем по мере надобности, для определения наличия нового файла:

Код:
@echo off
for /f "tokens=*" %%a in ('dir /b /a:-d ^| findstr /v /g:tmp.txt 2^>nul') do echo new file %%a
dir /b /o:-d>tmp.txt
pause
Автор: saturnatu
Дата сообщения: 29.05.2007 14:28
Maza Faka
Спасибо!

Автор: wolf0425
Дата сообщения: 29.05.2007 18:13
подскажите какую-нибудь консольную утилитку, дающую инфу по .avi файлам.
в основном интересует время фильма...
Автор: euheny
Дата сообщения: 30.05.2007 02:45
KapralBel

Цитата:
А почему баг?

Да потомучто то , что это не предусмотрено - без сомнения грубая недоработка возможностей комстроки , а значит можно сказать что баг . Моё мнение конечно .
Вобщем оффтоп.
Автор: ErroriST
Дата сообщения: 30.05.2007 02:54
подскажите пожалуйста как реализовать данную фичу.

есть строка, выводящяя на экран какое либо слово, к примеру
echo enter your password:

нужно сделать, что бы при вводе этого самого пароля все буквы шли после ":"
т.е. так

enter your password: mypassword

да и после ":" должен быть пробел.


..
честно, нет времени читать весь топ, поэтому сильно не бейте
Автор: NIKZZZZ
Дата сообщения: 30.05.2007 03:07
ErroriST

Код: set /p pass=enter your password :
Echo pass - %pass%
Автор: ErroriST
Дата сообщения: 30.05.2007 03:14
NIKZZZZ
Спасибо большое! Очень выручил!
Автор: wolf0425
Дата сообщения: 30.05.2007 08:56
А как-нибудь встроенными средствами xp можно из батника определить - с какими аргументами был запущен экзешник (к батнику он никак не относится)?

tasklist.exe может выдать всю информацию по подгруженным программой dll, но комстроку через него вытащить что-то не получается...
Автор: KapralBel
Дата сообщения: 30.05.2007 09:17
wolf0425
Если екзешник запускается из батника - то можно формировать аргументы в переменную и подставлять - тогда будешь знать
Автор: wolf0425
Дата сообщения: 30.05.2007 09:54
KapralBel экзешник запускается из независимого батника или из меню Start/Run или копией текущего батника.
Причем интересует не просто найти в процессах экзешник, а именно определить - с какими же параметрами он был запущен (не с похожими ли на те, что при запуске из этого батника).

внешней утилитой узнать аргументы запуска процесса - проблем нет, но не хотелось бы таскать левые утилиты за батником.
Автор: igor_andreev
Дата сообщения: 30.05.2007 10:00
wolf0425

@echo off

> tmp.vbs echo Set Procs = GetObject("winmgmts://localhost")
>>tmp.vbs echo Set Processes = Procs.ExecQuery("select * from Win32_Process")
>>tmp.vbs echo For Each i In Processes
>>tmp.vbs echo WScript.Echo i.Name ^& " " ^& i.CommandLine
>>tmp.vbs echo Next

cscript tmp.vbs & del tmp.vbs

Автор: wolf0425
Дата сообщения: 30.05.2007 12:01
igor_andreev а может можно не писать временный файл, а запихнуть .vbs часть в тело самого командника?
видел (но не вспомнил - где) такой финт для задержки через jscript - наверно ж и для vbscript можно?
Автор: KapralBel
Дата сообщения: 30.05.2007 12:06
wolf0425
А смысл?
Все таки батнички в основном предназначены для вызова внешних утилит и некоторой обработки взаимодействия между ними?
Таскаешь батничек (пару тройку нужных утилит к ним) - не самое страшное событие в жизни
Автор: wolf0425
Дата сообщения: 30.05.2007 12:36
KapralBel смысл инкапсуляции - чтобы не мусорить на чужом компе лишний раз. даже подтирая за собой. Да и прав на запись может случайно не найтись.

этих утилит у меня и так таскается 18Мб (плюс ещё столько же плагинов), так что pv.exe (61кб) мне погоду не делает - но ведь предлагать всем таскать его (или готовый vbs) вместе с батником - несколько нехорошо...
Автор: KapralBel
Дата сообщения: 30.05.2007 12:41
wolf0425

Цитата:
чтобы не мусорить на чужом компе лишний раз. даже подтирая за собой. Да и прав на запись может случайно не найтись.

А как туда батничек попадет?
СД/ДВД/Флэш - не подойдут и запуск с них?


Цитата:
о ведь предлагать всем таскать его (или готовый vbs) вместе с батником - несколько нехорошо...

А что 61к - это как-то критично по объему свободного места? или тяжелей дискета с батничком станет??
Не выдумывайте себе проблемы
Пока простые задачи - это можно и на батничках, а если потруднее - то без сторонних утилит и не обойдешься
Автор: wolf0425
Дата сообщения: 30.05.2007 12:51
KapralBel батничек туда принесут или скачают.

Цитата:
А что 61к - это как-то критично по объему свободного места?

нет, раздражает не то что он в 20 раз длиннее самого батника,
а что это отдельный файл, который надо не потерять.
тем более, что обойтись без него все-таки можно, а наверно можно и без отдельного .vbs.

если у тебя нет решения на то что я спрашивал - не мельтеши,
чего делать при отсутсвии красивого решения я могу придумать и самостоятельно.

Автор: igor_andreev
Дата сообщения: 30.05.2007 13:17

Цитата:
чтобы не мусорить на чужом компе лишний раз. даже подтирая за собой. Да и прав на запись может случайно не найтись.

В %temp% писать можно всегда, любому юзеру. И погадить туда всегда приятно Ты для переносного фара батник пишешь?

@echo off

> "%temp%\tmp.vbs" echo Set Procs = GetObject("winmgmts://localhost")
>>"%temp%\tmp.vbs" echo ColProcess = "'Far.exe'"
>>"%temp%\tmp.vbs" echo Set Processes = Procs.ExecQuery("select * from Win32_Process Where Name = " ^& ColProcess)
>>"%temp%\tmp.vbs" echo For Each i In Processes
>>"%temp%\tmp.vbs" echo WScript.Echo i.CommandLine
>>"%temp%\tmp.vbs" echo Next

cscript "%temp%\tmp.vbs" //nologo | find /i "что надо"
del "%temp%\tmp.vbs"

У мну был такой батник, полностью по другому правда работал и поболе функциональности. Он полностью подменял все записи в реестре, еще устанавливал Colorer, BgCopy, запускался с нужными параметрами консольного окна в зависимости от разрешения экрана(80x25 ф топку). Параметры консольного окна в твой батник прям просятся.

Цитата:
чего делать при отсутсвии красивого решения

Потом я на батник и флешки забил и пошел по пути технического прогресса . Мое красивое решение - у меня уж второй год в качестве 60-80 Гб флешки - маленькие килограмовые ноуты Sony(Фар стоит ессно), в папке с собой таскаю. И в двух офисах, на складе и дома везде ноуты и WI-FI, куда бы ни пришел - моя "флешка" всегда автоматом в сети, видит другие компы, к принтеру и инету подключена Удобная схема, рекомендую. По финансам единственно не всем конечно доступна, ноуты обычно подороже стационарников стоят
Автор: wolf0425
Дата сообщения: 30.05.2007 13:35
igor_andreev

Цитата:
У мну был такой батник, полностью по другому правда работал и поболе функциональности.
и где на него можно сейчас посмотреть?
вопрос чисто познавательный - ни Colorer ни BCopy я таскать не собираюсь.

а окно, стартующее в 80х25 - УДОБНО. потому что из него ФАР сам очень замечательно разворачиватеся на весь экран автостартующей макрой, подстраиваясь под разрешение
вот бы ещё ConEmu.exe умел стартовать принудительно в 80х25...


Цитата:
меня уж второй год в качестве 60-80 Гб флешки - маленькие килограмовые ноуты Sony

не, не катит:
у меня дежурная задача для PortableFAR.cmd - запуск ФАРа по сети на чужом компе, чтоб мне там было комфортно чего-то администрить.
причем работаю там когда под своим аккаунтом, когда и под хозяйским - права разные.
Автор: saturnatu
Дата сообщения: 30.05.2007 13:39
какие есть операторы сравнения строк в батниках

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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