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

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

Автор: 192168
Дата сообщения: 04.12.2009 15:27
01MDM

Спасибо!
Автор: Primat081
Дата сообщения: 04.12.2009 16:17
Здравствуйте, помогите решить такую задачу:
Подсчитать количество подкаталогов в заданном (пользователем) каталоге, с/без учета скрытых/системных папок
Заранее спасибо!!!
Автор: SANIOK_AV
Дата сообщения: 04.12.2009 17:01
Ortios
king_stiven
Спасибо большое!!!
Автор: Craager
Дата сообщения: 04.12.2009 18:49

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

Есть обновляемая каждый день папка (назовём её "X") и требуется батник, который будет делать резервную копию (backup) всех файлов и папок из папки "X" в условную папку "Y".

Как это можно реализовать ?


подскажите (((
Автор: yurkesha
Дата сообщения: 04.12.2009 19:58

Цитата:
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
Если честно - задрали уже КРИВЫЕ скрипты написанные ОЧЕНЬ ГРАМОТНЫМИ, но очень торопливыми людьми Сами усложняем себе жизнь да еще вдобавок и подаем дурной пример... Тем более что правила вобщем-то просты и общеизвестны.
Чтобы не приходилось пользоваться данными (несомнено совершенными скриптами!) пишем скрипты правильно!
[more=крик души]
1. Присвоения надо делать так:
Код: set "my_variable=bla bla bla"
Автор: wolf0425
Дата сообщения: 04.12.2009 21:59
yurkesha [more]
Цитата:
подавление любого вывода
к этому лучше пристегнуть пример с перенаправлением любого вывода в файл, а не в нуль.

Код: 2>&1 1>myfile.txt
Автор: yurkesha
Дата сообщения: 04.12.2009 22:07
wolf0425
Принято! Спасибо что поддержал!
Даешь чистый код!
Автор: Craager
Дата сообщения: 04.12.2009 22:10
Люди, как добавить в батник между операциями паузу в 5-10 секунд?
Автор: yurkesha
Дата сообщения: 04.12.2009 22:17
Craager
смотрим в шапку - Делаем паузу в командном файле стандартными средствами Windows

Автор: king_stiven
Дата сообщения: 04.12.2009 23:10
yurkesha
что не так с
Цитата:
VBS-Скрипт-Модулем от ViSiToR.
? у меня пашет.
Автор: wolf0425
Дата сообщения: 04.12.2009 23:31
Craager
Цитата:
как добавить в батник между операциями паузу в 5-10 секунд?

не заморачивайся со скриптодвижком, ping -n 6 localhost >nul обеспечивает вполне повторяемую 5-секундную задержку c достаточно низкой нагрузкой на память/процессор.
Автор: yurkesha
Дата сообщения: 05.12.2009 09:25
king_stiven
Все так - пашет и красиво написан...
Только если скрипт требует применения такого модуля то именно сам скрипт который надо обрабатывать - кривой!

Добавлено:
То есть если код можно испортить добавлением хвостового пробела - он кривой...
Предлагаю поместить рекомендации по созданию устойчивого к хвостовым пробелам в шапку. С описанием и примерами.
Для этого собираю рекомендации - первые в моем посте выше и в посте wolf0425. Надеюсь что форумчане поддержат начинание...
Автор: mugil_cephalus
Дата сообщения: 05.12.2009 09:57
yurkesha
wolf0425
как свой комент вывести на отдельную страницу не знаю, но по сути:
yurkesha

Цитата:
(ECHO My sting for use)

здесь опечатка? string?
wolf0425

Цитата:
if errorlevel 1 (echo error!) else (echo success!)

может так - if errorlevel 1 (echo error!) else echo success!

Цитата:
if not errorlevel 1 (echo success!)

может так - if not errorlevel 1 echo success!
ты сам говорил n страниц назад не увлекаться скобками в конструкции if, только если они критически необходимы - то использовать
if /?
Вот правильный пример, где все команды расположены в одной строке:

IF EXIST имя_файла. (del имя_файла.) ELSE echo имя_файла. missing
Автор: yurkesha
Дата сообщения: 05.12.2009 10:45
mugil_cephalus
в принципе опечатка, но поскольку это просто тект для примера то непринципиально...

All
Еще - команда ECHO теоретически может быть опасна так как может приводить к выполнению [more=кода]
Код: SET "AAA=сообщение&"
SET "BBB=CD"
ECHO %AAA%%BBB%
Автор: mugil_cephalus
Дата сообщения: 05.12.2009 11:32
yurkesha

Цитата:
в принципе опечатка, но поскольку это просто тект для примера то непринципиально...

ну раз уж на повестке - скрупулезная педантичная (в хорошем смысле слова) правка скриптов
Цитата:
Если честно - задрали уже КРИВЫЕ скрипты

, то, имхо, newbies могут этого не понять


Цитата:
mugil_cephalus

Цитата:как свой комент вывести на отдельную страницу не знаю

используй теги [more]сообщение для выноса[/more]


ок
Автор: yurkesha
Дата сообщения: 05.12.2009 11:56
mugil_cephalus
исправил даже на русском фразу сделал...

Вот вроде сообразил безопасную замену для [more=ECHO]Вывод на экран с переводом строки
Код: SET /p"=%AAA%"<nul&ECHO.
Автор: mugil_cephalus
Дата сообщения: 05.12.2009 12:17
wolf0425

Цитата:
а еще нужен какой-то пример с переменными в цикле for

лучше пример на один из самых часто задаваемых вопросов - значение (token field) в destinationStringM в destinationFile2 заменить на значение из sourceStringN из sourceFile1:
1) в шапке есть вариант с sbs2.com
2) создать вариант с for
3) этот же пример на sed

Добавлено:
yurkesha

Цитата:
Вот вроде сообразил безопасную замену для ECHO

думаю, надо еще в скобках указать (что это только CR или только LF или CR/LF)
я в этом плохо разбираюсь, но думаю с дефинициями нужно сразу определиться - как часто говорят на forum.ru-board, - правильно сформулированный вопрос - пололвина ответа
Автор: yurkesha
Дата сообщения: 05.12.2009 12:38
mugil_cephalus
В данной ситуации "с переводом строки" обозначает 0D 0A то есть ровно так как при обычном ECHO
Автор: mugil_cephalus
Дата сообщения: 05.12.2009 12:45
yurkesha

Цитата:
В данной ситуации "с переводом строки" обозначает 0D 0A то есть ровно так как при обычном ECHO

это я понимаю

я имел ввиду, что указать в скобках, что
Цитата:
без перевода строки
- это типа так:

... без перевода строки (без добавления CR/LF)
Автор: yurkesha
Дата сообщения: 05.12.2009 13:04
mugil_cephalus
Вот вроде оформил:
[more=вывод переменных со спецсимволами в содержимом на экран и в файл .cmd]
Код: [no]@ECHO OFF&CLS
(ECHO Обработка переменных со спецсимволами "(", ")","&","|",">","<")
(ECHO SET "AAA=сообщение()&|<>команда")
SET "AAA=сообщение()&|<>команда"

(ECHO Вывод на экран с обрамляющими двойными кавычками)
(ECHO ^(ECHO "%%AAA%%"^))
(ECHO "%AAA%")

(ECHO Перенаправление значения переменной в файл file.txt с переводом строки то есть с CR/LF)
(ECHO с заменой существующего file.txt)
(ECHO SET /p"=%%AAA%%"^<nul 1^>file.txt^&ECHO.^>^>file.txt)
SET /p"=%AAA%"<nul 1>file.txt&ECHO.>>file.txt

(ECHO Перенаправление значения переменной в файл file.txt с переводом строки то есть с CR/LF)
(ECHO дописыванием в существующий file.txt)
(ECHO SET /p"=%%AAA%%"^<nul 1^>^>file.txt^&ECHO. 1^>^>file.txt)
SET /p"=%AAA%"<nul 1>>file.txt&ECHO. 1>>file.txt

(ECHO Перенаправление значения переменной в файл file1.txt без перевода строки то есть без CR/LF)
(ECHO с заменой существующего file1.txt)
(ECHO SET /p"=%%AAA%%"^<nul 1^>file1.txt)
SET /p"=%AAA%"<nul 1>file1.txt

(ECHO Перенаправление значения переменной в файл file1.txt без перевода строки то есть без CR/LF)
(ECHO с дописыванием в существующий file1.txt)
(ECHO SET /p"=%%AAA%%"^<nul 1^>^>file1.txt)
SET /p"=%AAA%"<nul 1>>file1.txt

(ECHO Вывод значения переменной на экран с переводом строки то есть с CR/LF)
(ECHO SET /p"=%%AAA%%"^<nul^&ECHO.)
(ECHO ^(ECHO Вторая строка^))
SET /p"=%AAA%"<nul&ECHO.
(ECHO Вторая строка)

(ECHO Вывод значения переменной на экран без перевода строки то есть с CR/LF)
(ECHO SET /p"=%%AAA%%"^<nul)
(ECHO ^(ECHO Вторая строка^))
SET /p"=%AAA%"<nul
(ECHO Вторая строка)

(ECHO Метод предварительной подготовки: )
(ECHO SET "AAA=%%AAA:&=^&%%")
(ECHO SET "AAA=%%AAA:|=^|%%")
(ECHO SET "AAA=%%AAA:<=^<%%")
(ECHO SET "AAA=%%AAA:>=^>%%")
(ECHO SET "AAA=%%AAA:(=^(%%")
(ECHO SET "AAA=%%AAA:)=^)%%")
SET "AAA=%AAA:&=^&%"
SET "AAA=%AAA:|=^|%"
SET "AAA=%AAA:<=^<%"
SET "AAA=%AAA:>=^>%"
SET "AAA=%AAA:(=^(%"
SET "AAA=%AAA:)=^)%"
(ECHO ^(ECHO %%AAA%%^))
(ECHO %AAA%)[/no]
Автор: mugil_cephalus
Дата сообщения: 05.12.2009 13:48
yurkesha
такими темпами - позовут в MS писать мануалы
Автор: BumerangII
Дата сообщения: 05.12.2009 14:37
NIKZZZZ

Цитата:
А не проще ли полностью создать sysprep.ini батником?

это я так понимаю собрать его через echo ...... >>sysprep.ini

Автор: yurkesha
Дата сообщения: 05.12.2009 15:00
mugil_cephalus
Кстати получается что еще "(" и ")" надо экранировать при определенных условиях вывода...
Автор: 01MDM
Дата сообщения: 05.12.2009 16:32
Обновилась отличная утилита ansicon.exe (ver 1.23), позволяющая управлять консольным хостом с помощью esc-последовательностей (вспомните DOS или Linux). Загрузить последнюю версию можно на: http://ansicon.adoxa.cjb.net/

Для примера реализация прогресс-бара с помощью ansicon:

Код:
::
:: Progress bar example
::

@echo off
setlocal

:: Your Path To ansicon.exe (если оно не в "пути")
set "path=%path%;C:\users\mdm\bin\ansi"
ansicon -p

echo.
echo [\esc[s ]
for /l %%i in (1,1,25) do call:progress "%%i"
echo.
goto:eof

:progress
sleep -m 400

set /a "per=%~1*100/25"
set "per= %per%"

for %%i in (/ - \ ^|) do sleep -m 25 & echo \esc[u\esc[2G%%i
echo \esc[u#\esc[s\esc[32G%per:~-3%%%
Автор: mugil_cephalus
Дата сообщения: 05.12.2009 16:59
01MDM

Цитата:
ЗЫ. Для задержки (так как пример) использовал sleeep.exe (откуда не помню)

из win server 2003 reskit http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&DisplayLang=en
Автор: NIKZZZZ
Дата сообщения: 05.12.2009 17:13
BumerangII

Цитата:
это я так понимаю собрать его через echo

Берешь любой нормальный текстовой редактор, поддерживающий RegExp, и перед каждой строкой вставляешь

Код: >>"d:\...\sysprep.ini" Echo
Автор: yurkesha
Дата сообщения: 05.12.2009 17:26
NIKZZZZ

Цитата:
Ограничения - спец. символы

Ну во-первый спец символы можно экранировать при выводе:
Код: ECHO ^& ^| ^< ^>
Автор: NIKZZZZ
Дата сообщения: 05.12.2009 18:11
yurkesha

Цитата:
Ну во-первый спец символы можно экранировать при выводе

Так я это и мел ввиду, просто при простой замене можно на этом споткнуться.
Автор: egor23
Дата сообщения: 05.12.2009 18:40
Как получить \ обработать произольное значение в переменной (могут быть всякие спец.символы)?


Цитата:
CMDOW @ /HID
@ - текущее окно
как CMDOW определяет текущее окно?

перефразирую
как работает параметр @ ?
Автор: 01MDM
Дата сообщения: 05.12.2009 18:56
egor23

Цитата:
Как получить \ обработать произольное значение в переменной (могут быть всякие спец.символы)?

Вопрос некорректен. Что, откуда и куда?


Цитата:
как работает команда @ ?

Определяет по заголовку. Наверное.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

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


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