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

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

Автор: 01MDM
Дата сообщения: 11.11.2010 10:48
Accessor

Цитата:
А как мне узнать количество токенов, которые надо вычленить в моей строке - вот в чём был мой вопрос.


Код:
@echo off
setlocal

set string=qwertyhakdfdweqsdgddakj

:: Если один разделитель, например "a"
for %%i in ("%string:a=","%") do set /a tokens+=1
Автор: Accessor
Дата сообщения: 11.11.2010 11:11
01MDM
Поясни, плиз, выражение в скобках. Да и тело цикла, тоже, непонятно...
Автор: 01MDM
Дата сообщения: 11.11.2010 11:27
Accessor

Цитата:
Поясни, плиз, выражение в скобках.

Там не выражение, а просто переменная %string% приведенная к виду:

Код:
"qwertyh","kdfdweqsdgdd","kj"
Автор: Accessor
Дата сообщения: 11.11.2010 11:34
01MDM

Цитата:
Там не выражение, а просто переменная %string% приведенная к виду
"qwertyh","kdfdweqsdgdd","kj"


Ок, а что именно тогда приводит её к этому виду - двоеточие, или равно? Символ "а", как я понял, это и есть разделить?
Автор: res2001
Дата сообщения: 11.11.2010 11:34
Accessor
У меня универсальный вариант, не зависит от количества токенов, обработает все что есть.
Автор: Accessor
Дата сообщения: 11.11.2010 11:35
и для чего нужно ,"%" там же, в скобках?
Автор: 01MDM
Дата сообщения: 11.11.2010 11:53
Accessor

Код:
set "string=12345a67890"
echo "%string:a=","%"
Автор: slech
Дата сообщения: 11.11.2010 14:02
сегодня узнал о приятной програмке, правдо в Windows XP её нету, но в 2k3 есть.
forfiles
Автор: Accessor
Дата сообщения: 11.11.2010 14:26
01MDM
Цитата:
%var:<string1>=<string2>%
Это модификация переменной.
С этим разобрался, прочитав help, а вот с ,"%" по-прежнему непонятно.
Автор: res2001
Дата сообщения: 11.11.2010 14:35
Accessor

Цитата:
"%" по-прежнему непонятно.

да это закрывающий знак процента для обращения к переменной.
Там на самом деле запятая в кавычках "," а после нее закрывающий процент, а далее закрывающая общая кавычка: "%string:a=","%"
Автор: zhuchella
Дата сообщения: 11.11.2010 14:50
ToALL
Есть такая задача: в файле Win.ini нужно убрать две строчки определённого формата (шаблон есть). Работа должна быть в фоне. Что можете посоветовать ?
Автор: Accessor
Дата сообщения: 11.11.2010 14:57
res2001
Цитата:
"%string:a=","%"

Всё, наконец-то понял! А с первого взгляда кажется, что в цикл передаётся две строки, заключенные в двойные кавычки. И я сижу и туплю уже пол дня, как такое может быть...
Автор: yurkesha
Дата сообщения: 11.11.2010 15:13
zhuchella
TYPE win.ini|FINDSTR /V...
вместо "..." дописать что надо. Если что руководствоваться FINDSTR /?
И вывод перенаправить в новый файл...

Добавлено:
А насчет в фоне - есть масса способов скрытого запуска bat-файлов.
Автор: zhuchella
Дата сообщения: 11.11.2010 19:13
yurkesha
Спасибо.

Цитата:
И вывод перенаправить в новый файл...

Как это сделать ?
Автор: smirnvlad
Дата сообщения: 11.11.2010 19:26
zhuchella
TYPE win.ini|FINDSTR /V... >winini.new
Автор: Free_Soft
Дата сообщения: 11.11.2010 20:28
а как можно выполнить определенную задачу в батнике при нажатии кнопок не клавиатуре?
Автор: bomzzz
Дата сообщения: 11.11.2010 21:00
горячая клавиша что ли? или просто ввод?
Автор: Free_Soft
Дата сообщения: 11.11.2010 21:12
горячая клавиша. напр при нажатии Ctrl+L перенаправить содержимое переменной в файл
Автор: bomzzz
Дата сообщения: 11.11.2010 21:13
ECHO OFF
COLOR 9F
CLS
set /p skorost=введите скорость таракана
echo %skorost%
pause

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

Добавлено:
может кто и делал как то - чета я не помню чтоб тута такого писали

Добавлено:
вроде тут в примере программы написано что то про цмд может и будет работать если окно батника будет активным.

Добавлено:
вообще под досом есть драйвер специальный для горячих клавиш может он будет работать
Автор: Free_Soft
Дата сообщения: 11.11.2010 21:21

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

ну под Win7 x64 вряд ли...
Автор: bomzzz
Дата сообщения: 11.11.2010 21:26
чета ниче в голову не приходит. разве самой винде назначить горячую клавишу.

говорю тебе пора язык учить какой нибудь.

Добавлено:
логика такая же как в батниках только возможностей больше и синтаксис другой
Автор: wolf0425
Дата сообщения: 11.11.2010 22:58
пара вопросов нарисовалась:

1. как бы быстренько найти на диске все файлы более 100Мб размером
Всего на диске файлов дофига, диск небыстрый

2. а есть в природе утилиты управления dfs шарами из комстроки?
Автор: res2001
Дата сообщения: 12.11.2010 07:53
wolf0425

Цитата:
1. как бы быстренько найти на диске все файлы более 100Мб размером
Всего на диске файлов дофига, диск небыстрый

Может фильтровать вывод dir /-c /s c:\ ?
Автор: igor_andreev
Дата сообщения: 12.11.2010 09:27

Цитата:
1. как бы быстренько найти на диске все файлы более 100Мб размером
Всего на диске файлов дофига, диск небыстрый

У меня в меню Far вот так:
Код:
tmp:<ndff -d !?Drive?(!:)! !?Search mask?*! -sd -silent -fDIRS -fsize !?Minimal size?0! !?Maximum size?!
Автор: asurwot
Дата сообщения: 12.11.2010 09:40
есть структура каталогов
c:\data\mail\1
c:\data\mail\2
c:\data\mail\3
....
c:\data\mail\n
в каталогах 1,2,3 ... n есть подкаталоги save, arh итп
нужно в переменную получить перебором путь такого вида c:\data\mail\n

set mail=c:\data\mail\
for /R %mail% %%i in (.) do (
echo %%i
)

выдает
список типа
c:\data\mail\1\.
c:\data\mail\1\arh\.
c:\data\mail\1\save\.
c:\data\mail\2\.
c:\data\mail\2\arh\.
c:\data\mail\2\save\.
c:\data\mail\n\.
c:\data\mail\n\arh\.
c:\data\mail\n\save\.

объясните плиз как правильно сделать?



Автор: king_stiven
Дата сообщения: 12.11.2010 09:54
wolf0425
1
вроде как forfiles может
http://www.national.class.ru/win2000/2009/04/9100212/
2
или банально перебирать каталоги
for /r in (.)
и в каждом каталоге диром выстроить по размерам от большего к меньшему, и как только условие по размеру не подходит
goto
и в следующий каталог

Добавлено:
asurwot
for /f ... ('dir ....')
схема, смотри справку
Автор: ipmanyak
Дата сообщения: 12.11.2010 10:58
asurwot
set mail=c:\data\mail\
for /F %%i in ('dir /b /s %mail%') do echo %%i

Автор: asurwot
Дата сообщения: 12.11.2010 13:13
Огромнок спасибо!!!
с этим разобрался
подскажите плиз еще

как выбрать только папки которые начинаются с определенной комбинации символов ?

c:\data\mail\1
c:\data\mail\2
c:\data\mail\3
c:\data\mail\prt1
c:\data\mail\prt2
c:\data\mail\prt3
c:\data\mail\pr1
c:\data\mail\pr2
c:\data\mail\pr3
....
c:\data\mail\n
c:\data\mail\prtN
c:\data\mail\prN

что бы в итоге получилось
c:\data\mail\prt1
c:\data\mail\prt2
c:\data\mail\prt3
....
c:\data\mail\prtN

зарание благодарен.
Автор: king_stiven
Дата сообщения: 12.11.2010 13:18
asurwot
dir /b /s %mail%\prt*
Автор: asurwot
Дата сообщения: 12.11.2010 13:35
биг спс.
сам додумался, но тупо сделал ошибку в буквах)

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Windows 7 Starter


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