Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd) 2

Модерирует : gyra, Maz

Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
(часть 1)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 5
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Курс лекций для начинающих. Полезно и просто описано
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
· Уильям Станек - Командная строка Microsoft Windows (вплоть до w2k3)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек)
 
Старая версия первого сообщения

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:08 19-11-2007 | Исправлено: Dmitriy05, 22:49 13-04-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CrackMe
Нужно распаковать, а потом снова запаковать все в одну папку?
С помощью 7-zip:

Код:
 
@echo off
 
:: 1 - папка с подпапками, где архивы
:: 2 - итоговая папка
 
md "2" 2>nul
for /f "tokens=*" %%i in ('dir /b /s "1\*.zip"') do 7z e "%%i" -o"2"
7z a -tzip "2.zip" "2"
 

 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:15 04-07-2008 | Исправлено: 01MDM, 21:25 04-07-2008
Cmith

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужен батник который при запуске заходил бы на фтп (не аноним) и заливал бы на фтп файл с компа.  
123.bat: "ftp ftp_server login pass cd dir send name_file close quit"
После "ftp_server" cmd останавливается и просит ввести логин вручную.
Как сделать, чтобы батник автоматически заходил на фтп с именем и паролем и копировал файл на фтп?

Всего записей: 2 | Зарегистр. 05-07-2008 | Отправлено: 19:02 05-07-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cmith
 

Код:
 
@echo off
(
    echo login  
    echo pass  
    echo cd  
    echo dir  
    echo send name_file  
    echo close  
    echo quit
) 1>ftp.txt
ftp -s:ftp.txt ftp_server
del /q ftp.txt  
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:29 05-07-2008
Cmith

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
 
Спасибо! работает.
Только вот вопрос. Зачем нужно создавать ftp.txt?

Всего записей: 2 | Зарегистр. 05-07-2008 | Отправлено: 22:37 05-07-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cmith

Цитата:
Зачем нужно создавать ftp.txt?

 
ftp.exe не работает из скриптов, а из файла читает команды с ключом -s. В батнике просто сначала создается этот файл с командами и подсовыватся ftp.exe  
 
Можешь просто составить текстовый файл с командами ftp и запускать:

Код:
 
ftp -s:file.txt some://url
 
 
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:57 05-07-2008
Craager



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди помогите, нужен скрипт на языке программирования PERL или PHP, который будет передавать данные другому скрипту, а точнее брать определённую информацию с формы из которых будет передаваться эта информация для APACHE

Всего записей: 373 | Зарегистр. 08-06-2006 | Отправлено: 10:40 07-07-2008
INNO_SANCTUM

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток.  
Есть задача:
нужно запустить все файлы с архивным атрибутом из заданной папки, после чего архивный атрибут с этих файлов снять.
Решение:
 

Код:
 
set pth=d:\work\a
 
for /F "delims=~ tokens=*" %%i in ('dir /b /a:a %pth%') do (
attrib -A "%pth%\%%i"
start %pth%\%%i)
 

 
Проблема: не работает с файлами, в имени которых есть пробел. При обработке, например, a b.txt оманда start в приведенном варианте пытается запустить файл с именем a, и, естественно, не находит. Казалось бы, решение тривиально - как и с командой attrib, взять параметр в кавычки. Ан нет. Команда

Код:
 
start "%pth%\%%i"  
 

 
просто-напросто открывает окно cmd.exe в текущей папке. В чем беда, подскажите.  
Спасибо.
 
UPD разобрался, почитал внимательней хелп. первый параметр, указанный в кавычках, рассматривается как заголовок окна. Исправил:  
 

Код:
 
set pth=d:\work\a
 
for /F "delims=~ tokens=*" %%i in ('dir /b /a:a %pth%') do (
attrib -A "%pth%\%%i"
start "111" "%pth%\%%i")
 

Всего записей: 18 | Зарегистр. 02-06-2008 | Отправлено: 12:48 07-07-2008 | Исправлено: INNO_SANCTUM, 13:11 07-07-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
INNO_SANCTUM
 

Код:
 
start "" "%pth%\%%i"
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:53 07-07-2008
vmix



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблема с воскл. знаком в имени файлов:
 
chcp 1251
for /f "tokens=*" %%C in (del.log) do del /q "%%C"
 
если в списке del.log (CP1251) встречаются файлы с воскл. знаком! то они не удаляются, как потом выяснилось команде DEL передается имя файла без воскл. знаков!
Как победить это?

Всего записей: 162 | Зарегистр. 22-10-2002 | Отправлено: 20:29 07-07-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vmix
 
Все удаляется. Ошибка где-то в другом месте.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:59 07-07-2008
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vmix

Цитата:
если в списке del.log (CP1251) встречаются файлы с воскл. знаком! то они не удаляются

У тебя наверняка в начале батника стоит команда "setlocal enabledelayedexpansion". Вот она и виновата

----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 21:07 07-07-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
vmix
 
Да, проверил, тогда надо так
 

Код:
 
for /f "tokens=*" %%C in (del.log) do endlocal && del /q "%%C"
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:17 07-07-2008
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Э... как-то мне это решение не нравится. Могут потеряться определенные выше переменные, может перестать работать код, который зависит от "отложенного раскрытия" и т.д.
Лучше уж вынести в отдельный блок:

Код:
 
setlocal disabledelayedexpansion
for /f "tokens=*" %%C in (del.log) do del /q "%%C"
endlocal
 


----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 21:35 07-07-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
Согласен.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:47 07-07-2008
vmix



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
01MDM
Спасибо! Да, дело было в setlocal ENABLEDELAYEDEXPANSION
переделал код без использования setlocal ENABLEDELAYEDEXPANSION
и все стало ОК!
 
Видимо, ! считается переменной и в значении, которое принимает %%С опускается.
 
Кстати в  RSDN#4-2007 говорится о подобной проблеме с переменной "!"

Код:
 
@echo off
rem Создаём переменные
set MYVVALUE1=123
set MYVVALUE2=MYVVALUE1
rem Создаём переменную "!"
set !=!
rem Активируем двойное раскрытие переменных через оператор !
setlocal ENABLEDELAYEDEXPANSION
echo 1. !%MYVVALUE2%!
echo 2. %!MYVVALUE2!%
echo 3. %!%MYVVALUE2%!%
rem Восстанавливаем настройки по умолчанию
endlocal
 

 
Вывод
1. 123
2.
3. MYVVALUE1
 
Попробовал set !=! в своем скрипте, не получилось..

Всего записей: 162 | Зарегистр. 22-10-2002 | Отправлено: 19:59 08-07-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vmix

Цитата:
Попробовал set !=! в своем скрипте, не получилось..

Переменную просто назови как угодно, но не "!"

Код:

@echo off  
set "MYVVALUE1=123"
set "MYVVALUE2=MYVVALUE1"
set "SPLAT=!"  
setlocal ENABLEDELAYEDEXPANSION  
echo 1. !%MYVVALUE2%!
echo 2. %SPLAT%MYVVALUE2%SPLAT%
echo 3. %!%MYVVALUE2%!%
endlocal

Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 13:21 09-07-2008
Kilich



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Нуждаюсь в вашей помощи!
просмотрел кучу станиц этой темы но рабочего варианта не смог найти , как не изворачивался изменяя код.
 
Вопрос:
Существуют текстовые файлы с кодировками (КОИ, ВИН и ДОС) - Необходимо обработать все файлы и привести их к единой Кодировке( либо в отдельный файл с кодировкой ВИН).
 
Помогите очень сильно нужно ...

Всего записей: 267 | Зарегистр. 18-09-2006 | Отправлено: 14:34 09-07-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kilich
В комстроке зайди в папку с *.txt и дай команду:

Код:

for %a in (*.txt) do xcode -w "%a" "%a"

xcode тут http://rusf.ru/books/yo/xcode.html

Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 15:15 09-07-2008
Kilich



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
igor_andreev
Попробую !!!
За ранее спасибо .... надеюсь получится....

Всего записей: 267 | Зарегистр. 18-09-2006 | Отправлено: 17:29 09-07-2008
vmix



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev

Цитата:
Код:
for %a in (*.txt) do xcode -w "%a" "%a"  

 
IMHO, xcode  не верно транслирует символ "номер" №
win (0xB9) -> win (0xC9)
win (0xB9) -> dos (0x89)
win (0xB9) -> iso (0xB9)
win (0xB9) -> koi (0xEA)
 
верно:
win (0xB9) -> win (0xB9)
win (0xB9) -> dos (0xFC)
win (0xB9) -> iso (0xF0)
win (0xB9) -> koi (0xBF)
 

Всего записей: 162 | Зарегистр. 22-10-2002 | Отправлено: 10:28 10-07-2008
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd) 2
Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru