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

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

Автор: wolf0425
Дата сообщения: 21.12.2009 23:31
Umboking например так if exist xx\xxx\nul echo xxx - папка
Автор: Umboking
Дата сообщения: 22.12.2009 04:01
wolf0425

Цитата:
например так if exist xx\xxx\nul echo xxx - папка

Спасибо! Про nul то я и забыл
Однако "например" предполагает как минимум ещё один вариант, какой?
Автор: wolf0425
Дата сообщения: 22.12.2009 05:45

Цитата:
Однако "например" предполагает как минимум ещё один вариант, какой?

ну хотя бы такой dir /b /ad xx\xxx 1>nul 2>nul && echo xxx - папка
Автор: alexcoolmagic
Дата сообщения: 22.12.2009 09:18
подскажите, как с помощью findstr найти подряд десять минусов? findstr [-]{10} a.txt не работает
неужели только так: findstr [-][-][-][-][-][-][-][-][-][-] a.txt ?
Автор: mugil_cephalus
Дата сообщения: 22.12.2009 13:00
alexcoolmagic
а есть какой-нибудь help/manual по findstr - почитал бы, - а то в ntcmds.chm и/или findstr /? - почти нет толковых примеров?
Автор: wolf0425
Дата сообщения: 22.12.2009 13:01

Цитата:
подскажите, как с помощью findstr найти подряд десять минусов?
А чем тривиальный findstr /c:"----------" a.txt не устраивает?
Автор: mouser
Дата сообщения: 22.12.2009 13:35
%0 - возвращает путь запускаемого файла и сам файл ... как чтоб вернул исключительно название запускаемого bat файла?
Автор: mugil_cephalus
Дата сообщения: 22.12.2009 13:52
mouser
%~n0 или %~nx0
см. call /?

Добавлено:
wolf0425

Цитата:
а есть какой-нибудь help/manual по findstr - почитал бы, - а то в ntcmds.chm и/или findstr /? - почти нет толковых примеров?

особенно бы почитать примеры по
Краткая сводка по синтаксису регулярных выражений:
. Любой символ.
* Повтор: ноль или более вхождений предыдущего символа или класса
^ Позиция в строке: начало строки
$ Позиция в строке: конец строки
[класс] Класс символов: любой единичный символ из множества
[^класс] Обратный класс символов: любой единичный символ из дополнения
[x-y] Диапазон: любые символы из указанного диапазона
\x Служебный символ: символьное обозначение служебного символа x
\<xyz Позиция в слове: в начале слова
xyz\> Позиция в слове: в конце слова
Автор: alexcoolmagic
Дата сообщения: 22.12.2009 20:55

Цитата:
А чем тривиальный findstr /c:"----------" a.txt не устраивает?

да надо было найти или строку из минусов, или такое: --> или такое: <-> или число со знаком процента, потому пришлось использовать регуляры

ну вот и заметил, что стандартный регуляр навроде [-]{10} не работает

Добавлено:

Цитата:
особенно бы почитать примеры по
Краткая сводка по синтаксису регулярных выражений


ну так и погугли по регулярным выражениям
Автор: Umboking
Дата сообщения: 23.12.2009 00:17
wolf0425

Цитата:
ну хотя бы такой dir /b /ad xx\xxx 1>nul 2>nul && echo xxx - папка

Класс! Никогда бы не догадался так dir использовать Спасибо!

Добавлено:
wolf0425

Цитата:
dir /b /ad xx\xxx 1>nul 2>nul && echo xxx - папка

Я вот одно не пойму - а зачем xx\xxx 1>nul 2>nul? Почему не xxx 1>nul? Если бы батник запускался из какой-то папки xxxx в которой xx\xxx, тогда да, а если из xx, то не сработает, нет? И ещё - можно как-то && заменить на несколько команд через '(' ? Можно конечно и несколько команд через && прописать, но не нравятся мне длинные строки.
Автор: wolf0425
Дата сообщения: 23.12.2009 09:22

Цитата:
Я вот одно не пойму - а зачем xx\xxx 1>nul 2>nul? Почему не xxx 1>nul?
потому что если папки нет - ругнется в stderr "File Not Found"

Цитата:
И ещё - можно как-то && заменить на несколько команд через '('
Можно конечно и несколько команд через && прописать, но не нравятся мне длинные строки.
неправильный у тебя эстетизм какой-то - длинная строка, представляющая законченную функциональную связку - сильно удобнее нескольких последовательных срок (делающих то же самое). например ее быстрее закомментарить для отладки батника, в ней тяжелее потерять что-то при бэкапе куска кода...
строки с if - ты так же маньячно разбиваешь на три для укорочения?
Но если очень хочется извращаться - на здоровье.

Код: dir /b /ad xx\xxx 1>nul 2>nul
if not errorlevel 1 (
echo xxx - папка
)
Автор: kermit
Дата сообщения: 23.12.2009 11:29
помогите разобраться с кодировкам

@echo Привет

Выдает вот это:
&#9573;хёЄ

chcp 1251 не помогает
Автор: mugil_cephalus
Дата сообщения: 23.12.2009 11:36
wolf0425

Цитата:
btw, посмотрел я свой последний батник...

в смысле, в одном *.bat-файле и скрипт, и конфиг, и логи?? это, методолгически, как в object-oriented programming?

Добавлено:
kermit
в окне консоли введи chcp без параметров - какая стоит там кодировка?
Автор: kermit
Дата сообщения: 23.12.2009 11:46
mugil_cephalus

Цитата:
в окне консоли введи chcp без параметров - какая стоит там кодировка?


дефолтная, 866
Автор: mugil_cephalus
Дата сообщения: 23.12.2009 11:53
kermit

Цитата:
@echo Привет

это пишешь в консоли или в bat-файле ?

Добавлено:
если в файле, - сохраняй его в dos-кодировке, напрмер, wordpad'om

Добавлено:
wolf0425

Цитата:
btw, посмотрел я свой последний батник...



Цитата:
Большое спасибо!
просто батник на 1700 строк это слишком, вот решил сделать поменьше, убрать лишнее

http://forum.ru-board.com/topic.cgi?forum=62&topic=9040&start=1340#16
вот у кого жизнь - не малина
Автор: kermit
Дата сообщения: 23.12.2009 13:22
mugil_cephalus

Цитата:
если в файле, - сохраняй его в dos-кодировке, напрмер, wordpad'om


спасибо, помогло!
честно сказать удивлен, ведь я до этого сохранял в dos-кодировке из редактора SynPad.
сейчас открываю в синпаде оба файла (старый и пересохраненный через вордпад), показывает что у обоих кодировка MS-DOS Batch, но при выполнении синпадовский батник выводит "кракозябры"
Автор: mugil_cephalus
Дата сообщения: 23.12.2009 13:58
kermit

Цитата:
честно сказать удивлен, ведь я до этого сохранял в dos-кодировке из редактора SynPad.

с этим редактором не знаком, но можешь посм. здесь - http://forum.ru-board.com/forum.cgi?forum=5 - может там есть топик по synpad'u
Автор: BlackLabel
Дата сообщения: 23.12.2009 18:09
Ребята помогите с батничком ,

Требуется запустить на компе 2 скайпа , собственно пишу в БАТ файле такой текст

@ECHO OFF

"C:\Program Files (x86)"\Skype\Phone\Skype.exe /secondary /username:123456789/password:123456789

и нормально запускаю 2 скайпа , но проблема в том что черный экран CMD окошка остается


Как правильно написать что бы после запуска Скайпа окно CMD закрывалось ?

СПАСИБО
Автор: CMD
Дата сообщения: 23.12.2009 18:23
BlackLabel
start "C:\Program Files (x86)"\Skype\Phone\Skype.exe /secondary /username:123456789/password:123456789

Вопрос всем:
как windows 7 проверить запущен ли батник с правами администратора?
В XP было просто: net user %username% | findstr "Администраторы Administrators" , но в семерке от этого мало толка - UAC всё ограничивает.
Автор: BlackLabel
Дата сообщения: 23.12.2009 18:34
CMD

Интересно то что не получилось ....

добавление Start не запустило программу , но добавление start "" вполне заработало

вот так заработало на WinXp

start "C:\Program Files (x86)"\Skype\Phone\Skype.exe /secondary /username:123456789/password:123456789

На семерке никак не захотело запускаться , не знаю с чем это связано ...

А с командой start "" успешно запустилось и на семерке
Автор: wolf0425
Дата сообщения: 23.12.2009 19:27
CMD BlackLabel
а чего вы хотели: у команды start первый параметр в "" - имя окна.
так что привыкайте писать start "" program - тогда замена program на "program" проходит без нежданчиков.
Автор: Mr_Hat
Дата сообщения: 23.12.2009 21:27
кхм...
Уважаемые коллеги и прочие любители и ценители сего жанра.
Подскажите как мне посредством командной строки определить нахождение папки "Рабочий стол"
Задача расширенная:
нахождение залогинившегося пользователя
нахождение всех пользователей.
Автор: wolf0425
Дата сообщения: 23.12.2009 21:44

Цитата:
Подскажите как мне посредством командной строки определить нахождение папки "Рабочий стол"
если система русская то %USERPROFILE%\"Рабочий стол" если нерусская %USERPROFILE%\Desktop.
И поаккуратнее там с кавычками...


Цитата:
Задача расширенная:
нахождение залогинившегося пользователя
echo %USERNAME%

Цитата:
нахождение всех пользователей.

тебе достаточно будет результата net users
или хочешь чего-то странного?

еще, вот тут обсуждалось как определить последний логин по следам в файлах.
http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1200
код был по живому выдран из батника определения предпоследнего логинившегося
Автор: Ortios
Дата сообщения: 23.12.2009 22:41
wolf0425

Цитата:
надо избиратьтельно прибить все теги в неправильном месте, оставив в остальных
строки в файле примерно такие:
^(тут оставить как есть)</small>(тут прибить теги <br> и любые другие)</DL>$

Если тебе еще актуально, держи:

Код: sed -r "s/<\/small>/&\n/" 1.txt|sed "/<\/DL>/s/<[^>]*>//g"|sed "$!N;s/\n/ /;s/$/<\/DL>/" >2.txt
Автор: Umboking
Дата сообщения: 23.12.2009 23:09
wolf0425

Цитата:
потому что если папки нет - ругнется в stderr "File Not Found"

Странно, у меня это работает только в том случае, если батник лежит в папке в которой находится папка xx с папкой xxx внутри, если батник поместить непосредственно в папку xx, то он просто не видит папку xxx не зависимо от того - есть она или нет. И насколько я понял - это правильно. Нет? а вот этот батник:

Код: dir /b /ad xxx 1>nul && echo xxx - папка
Автор: wolf0425
Дата сообщения: 24.12.2009 02:27

Цитата:
Странно, у меня это работает только в том случае, если батник лежит в папке в которой находится папка xx с папкой xxx внутри
так и задумано, строго в соответствии с заданием:
Цитата:
необходимо проверить в папке XX наличие папки XXX
xx\xxx - имя относительно текущего каталога. Если тебе нужно было проверять наличие папки xxx не в папке xx, а в текущей - так и надо было писать...

Цитата:
А если мне надо отработать 8-10 команд, то строка абсолютно нечитаемая.
если каждая команда использует или консольный вывод предыдущей или признак успешного завершения предыдущей - то развертывание этих 10 команд в столбик даст еще более нечитаемый столбик команд, да еще и с зависимостью его работоспособности от пробелов в концах строк.
вон выше мне три sed в строку написали, с коротенькими скриптиками.
как сам думаешь - если развернуть эту строку в три - она станет более читаемой или нет?
ну а до ограничения на длину строки надо сначала дорасти, точно знаю что строка в 260 символов проблем в ХР еще не вызывает (это одна команда - параметры длинные)
Автор: Verter
Дата сообщения: 24.12.2009 06:55
Как скопировать файлы из папки А в папку B, такие которые есть в папке А, но которых нет в папке B. То есть без перезаписи файлов которые уже есть в папке В. Метод сравнения - по имени файла (без контрольных сумм). Удаление содержимого папки В перед копированием - не предлагать. Искал, не нашел.
Автор: wolf0425
Дата сообщения: 24.12.2009 07:58
Verter
for %%a in ( ".\A\*.*" ) do if not exist ".\B\%%~nxa" copy "%%a" .\B\
Автор: Fearless2006
Дата сообщения: 24.12.2009 09:02
Доброго времени суток. помогите пожалуйста решить такую задачу: "Создать командный файл, который организует отображение на экране содержимого всех указанных файлов текущего каталога, делает запрос на необходимость копирования. В случае положительного ответа копирует эти файлы на дискету"
вот чего смог добиться своими усилиями

@echo off
dir
if exist %1 goto n
echo file not found %1
goto end
:n
type%1
xcopy /w A:\
end
Автор: mugil_cephalus
Дата сообщения: 24.12.2009 09:27
wolf0425

Цитата:
Цитата:btw, посмотрел я свой последний батник...

в смысле, в одном *.bat-файле и скрипт, и конфиг, и логи??


Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

Предыдущая тема: во вкладке автозагрузка


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