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

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

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

Widok (03-03-2010 16:29): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Widok



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

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

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:38 10-03-2009 | Исправлено: TechnicsKuzya, 13:54 27-12-2009
mugil_cephalus

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

Цитата:
я это ранее уже смотрел.. не могу найти ответ,

 
не берусь утверждать точно, но, имхо, тогда командой ftp этого не сделаешь
см.  wget - консольная утилита для скачивания файлов по HTTP, HTTPS и FTP протоколам http://sourceforge.net/project/showfiles.php?group_id=23617&package_id=16430

Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 20:34 02-01-2010
webms

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
не получилось.. если вам не сложно..вы можете посмотреть как решить мою проблему...
 
буду очень благодарен

Всего записей: 27 | Зарегистр. 19-11-2009 | Отправлено: 20:55 02-01-2010
mugil_cephalus

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вот же:
Ftp: dir
Выводит список файлов и подкаталогов в каталоге, расположенном на удаленном компьютере.
 
можно:
1) вывести список remote subdir
2) создать такую же local subdir
3) зайти в remote subdir
4) копировать

Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 21:04 02-01-2010
webms

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

Всего записей: 27 | Зарегистр. 19-11-2009 | Отправлено: 21:08 02-01-2010
mugil_cephalus

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
webms
я лазил в ftp через GUI, через cli - ни разу
mget копирует и файлы из подпапок тоже?
 
Добавлено:
вообще, интенция такая:
lcd C:\Backup\subdir1  
cd httpdocs\subdir1

Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 21:25 02-01-2010
webms

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

Всего записей: 27 | Зарегистр. 19-11-2009 | Отправлено: 21:43 02-01-2010
mugil_cephalus

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
webms
 
1) dir'om получаешь листинг подпапок в папке httpdocs и сохраняешь листинг в *.txt
2) md'om создаешь зеркало подпапок в локальной папке C:\Backup (беря инфу в *.txt)  
3) и для каждой подпапки:
a) lcd C:\Backup\subdir1  
b) cd httpdocs\subdir1
c) копирование файлов
 
есть какой-нить ftp-addresss без password requered, чтоб я мог потестировать (вслепую неудобно)?
 
F:\Documents and Settings\admin>ftp
ftp> open ftp.microsoft.com
Связь с ftp.microsoft.akadns.net.
220 Microsoft FTP Service
Пользователь (ftp.microsoft.akadns.netnone)): dir
331 Password required for dir.
Пароль:
 
------------

Код:
(
echo open ftp.domen.ru  
echo name  
echo pass  
echo prompt  
echo cd httpdocs  
echo dir c:\backup\list.txt
echo disconnect  
echo bye  
)>c:\backup\from_mos.ftp
start "" /wait ftp -s:c:\backup\from_mos.ftp
for /f "tokens=*" %%i in ('type c:\backup\list.txt') do (
md c:\backup\%%~ni
1>c:\backup\from_mos.ftp (
echo open ftp.domen.ru  
echo name  
echo pass  
echo prompt  
echo binary  
echo lcd C:\Backup\%%~ni  
echo cd httpdocs\%%~ni  
echo mget *.*  
echo disconnect  
echo bye  
) && start "" /wait ftp -s:c:\backup\from_mos.ftp)
del /q c:\backup\list.txt & del /q c:\backup\from_mos.ftp

Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 00:11 03-01-2010 | Исправлено: mugil_cephalus, 01:40 03-01-2010
Firstarey

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

Всего записей: 4 | Зарегистр. 10-03-2009 | Отправлено: 19:17 03-01-2010
mugil_cephalus

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

Цитата:
необходим батник, который названия файлов с расширением из папки заносил в переменные

setlocal enabledelayedexpansion
set "cnt=1"
for /f "tokens=*" %%i in ('dir /b /a:-d c:\folder') do set "var!cnt!=%%~nxi" &set /a cnt=!cnt!+1  
 

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

вот код от 01MDM ( http://forum.ru-board.com/topic.cgi?forum=5&topic=25393&start=500#9 )  

Цитата:
В смысле выбор задачи для выполнения интерактивно? Можно.  
 
 
Код:  
@echo off  
echo [1] Task1  
echo [2] Task2  
echo [3] Task3  
 
set /p tsk="Choose a task by number: "  
 
if not defined tsk goto:eof  
if %tsk%==1 goto:1  
if %tsk%==2 goto:2  
if %tsk%==3 goto:3  
goto:eof  
 
:1  
echo 1  
goto:eof  
:2  
echo 2  
goto:eof  
:3  
echo 3  
goto:eof  
 
   


Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 10:14 04-01-2010 | Исправлено: mugil_cephalus, 12:43 05-01-2010
mugil_cephalus

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zzzveroboy
в книге   Уильям Станек - Командная строка Microsoft Windows   http://rapidshare.com/files/89629093/Stanek_CLI_MS_Win.rar    
есть глава про спулинг - кажется, Управление сетевыми принтерами и службами печати, там про утилиты коммандной строки для спулинга печати (дают много полезной инфы для отладки и администрирования, конфигурирования)

Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 11:18 05-01-2010 | Исправлено: mugil_cephalus, 11:23 05-01-2010
bredonosec



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mugil_cephalus
а можно попросить немного иную, хоть и близкого рода задачу?  
Доступа по фтп нет, есть доступ по линкам вида \\сервер\папка
Связь очень плохая (порядка сотен байт в секунду), а надо 2-3 раза в неделю сливать документ весом порядка 3-4 метров. То есть, надо организовать так, чтоб каждый раз сливало _только один новый_ док, а не все имеющиеся на серве. При этом желательно, чтоб организовывало расположение документов аналогично такому же на серве.  
\\сервер\общая папка\месяц\ документ1, второй документ, ....  
То, есть. если правильно понял,
Цитата:
echo dir c:\backup\list.txt  
останется, только листинг с подпапками нужно. И потом как-то сравнение с листингом имеющегося локально, чтоб только новое сливать.  
 
можно подсказать, как?

----------
Вопрос: 'Что человек курит?' как правило возникает не когда ты слышишь, как он дышит, а когда видишь, что он пишет
Пропеллер играет роль вентилятора, он останавливается -пилот потеет
Аськи нету.

Всего записей: 16257 | Зарегистр. 13-02-2003 | Отправлено: 11:56 05-01-2010
mugil_cephalus

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bredonosec
что покажет команда dir, принадлежащая локальному контексту комстроки (cmd.exe) я могу посмотреть легко через тест кода в строке, а чего покажет команда dir в контексте ftp.exe я могу только догадываться (в ntcmds.chm мало чего сказано и вслепую - не видя вывода dir в режиме ftp  - можно только догадываться)
1) первая проблема в листинге remote dir - это, предпологаю, что в файле list.txt нужно как-то определять: что есть папка, а что - файл. эту проблему можно попытаться обойти через расширение - *.ext (если оно есть, то файл (сработает за исключением случаев с файлом без расширения)) беда в том, что у dir в локал. контексте cmd.exe - много возможностей, а в ftp - судя по всему только листинг без сортировки
 

Цитата:
Доступа по фтп нет, есть доступ по линкам вида \\сервер\папка  

это через wget?  
сервер в инете или в lan?
 
p.s.
у меня изолированная workstation + инет (ADSL), - так что, не имея возможности узреть результаты отработки кода и, соответствено, его парсинга, можно только предполагать что-то
 
p.p.s.
1) wget'a у меня нет (не работал с ним, ничего сказать не могу)
2) dir из контекста ftp.exe бесполезна если нет ftp-доступа
3) если lan, - предполагаю, что через net use \\сервер\папка можно поработать с dir из контекста cmd.exe

Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 12:37 05-01-2010 | Исправлено: mugil_cephalus, 13:18 05-01-2010
bredonosec



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

Цитата:
эту проблему можно попытаться обойти через расширение - *.ext (если оно есть, то файл (сработает за исключением случаев с файлом без расширения))  

возможно, облегчит момент, что файлы должны быть только пдф формата.  
 
фтп.ехе - не совсем понял, к чему - доступа по фтп нету.
Цитата:
это через wget?  
сервер в инете или в lan?  

вгетом не работал. это внутренняя сеть конторы, раскиданной по стране.  
То есть, можно воспринять как лан (хоть физически и через инет связь) - все айпи вида 10,1,*,*

Цитата:
предполагаю, что через net use \\сервер\папка можно поработать с dir

что-то вроде  
net use M: \\server\folder
dir M>list.txt  
?  
Да, дуаю, пройдет.  
 
а чтоб заходил в подпапки и там проверял?  

Всего записей: 16257 | Зарегистр. 13-02-2003 | Отправлено: 13:45 05-01-2010
mugil_cephalus

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
net use m: \\server\folder
for /r m: %%i in (*.pdf) do @echo %%i
 
Добавлено:
bredonosec
 
попробуй потестировать код
зеркало для локального диска c: (можешь заменить букву на нужную)
 
 

Код:
@echo off
net use m: \\server\folder
setlocal enableextensions
setlocal enabledelayedexpansion
for /r m: %%i in (*.pdf) do (
set "pth=%%~pi"
set "pth=!pth:~0,-1!"
2>nul md c:!pth!
echo no|copy /-y %%i c:!pth! 1>nul 2>&1 &&goto:eof)

Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 14:05 05-01-2010 | Исправлено: mugil_cephalus, 15:28 05-01-2010
bredonosec



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

Цитата:
попробуй потестировать код  

на серв заходит, локально папку создает, а копирования файла что-то не вижу...  
И проверку на существование - чтоб не копировать уже существующие - тоже..

 
апд.  
таки скопировал. Просто при закрытом окне незаметно было как пересылал (связь, как и говорил, просто жесть).  
странно отрабатывает. (  
Первые 2 файла сделало, а потом застряло. Новые не копирует вообще. Не понял юмора

----------
Вопрос: 'Что человек курит?' как правило возникает не когда ты слышишь, как он дышит, а когда видишь, что он пишет
Пропеллер играет роль вентилятора, он останавливается -пилот потеет
Аськи нету.

Всего записей: 16257 | Зарегистр. 13-02-2003 | Отправлено: 16:40 05-01-2010 | Исправлено: bredonosec, 18:24 05-01-2010
webms

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mugil_cephalus
 
 
Спасибо ОГРОМНОЕ!!!
я этот код так понимаю(правильно?? или как запустить через бат?):
 
старт.bat
------

Код:
 
call listing.bat
call backup.bat
call del.bat
 

 
 
call listing.bat
-----

Код:
 
echo open ftp.domen.ru  
echo name  
echo pass  
echo prompt  
echo cd httpdocs  
echo dir c:\backup\list.txt
echo disconnect  
echo bye  
 

 
call backup.bat
-----

Код:
 
d:\windows\system32\ftp -s:C:\Backup\from_mos.ftp
 

 
from_mos.ftp
-----

Код:
 
for /f "tokens=*" %%i in ('type c:\backup\list.txt') do (
md c:\backup\%%~ni
echo open ftp.domen.ru  
echo name  
echo pass  
echo prompt  
echo binary  
echo lcd C:\Backup\%%~ni  
echo cd httpdocs\%%~ni  
echo mget *.*  
echo disconnect  
echo bye  
 

 
del.bat
-----

Код:
 
del /q c:\backup\list.txt
 

Всего записей: 27 | Зарегистр. 19-11-2009 | Отправлено: 17:41 05-01-2010
storm2005

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Необходимо скопировать несколько каталогов с заранее известными именами.
Пути и имена передаю параметрами
%1 — каталог в котором находятся различные каталоги
%2 — куда копируется
%3. %4,...N — имена различных каталогов.
 

Код:
if /I [%4] NEQ [] goto p4
if /I [%3] NEQ [] goto p3
 
:p4
set db_name2=%4
 
:p3
set db_name1=%3
 
set db_dir=%1
set temp_dir=%2
 
rem копирует двумя возможными способами
xcopy %1\%3 %2\%3 /s /e /i /h /f
xcopy %db_dir%\%db_name2% %temp_dir%\%db_name2% /s /e /i /h /f

 
Как копирование выполнить циклом? Какой из xcopy предпочтительней?

Всего записей: 15 | Зарегистр. 18-02-2006 | Отправлено: 17:58 05-01-2010 | Исправлено: storm2005, 18:01 05-01-2010
ndch

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто-нибудь может просвятить, почему
Dr.Web Сканер для Windows v5.00.10
 
считает что

Код:
for %%i in (*.bat) do

инфицирован BAT.Generic.133
Что в этом куске опасного ?

Всего записей: 6518 | Зарегистр. 31-08-2008 | Отправлено: 21:40 05-01-2010 | Исправлено: ndch, 21:52 05-01-2010
526549



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошу совета. Провожу копирование файлов в коммандной строке. Очень хочется наглядности.  Спасет nircmd со своим shellcopy, но хочется чтобы процесс копирования был в ввиде ASCII прогрессбара прям в коммандной строке. Есть какая нибудь утилита для таких целей? Гугл не спасает

Всего записей: 359 | Зарегистр. 20-01-2007 | Отправлено: 03:10 06-01-2010
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ndch
Наверное считает опасным перебор батников, как вероятность их все выполнить в бесконтрольном цикле.
526549,
Можно самому попробовать. Как пример:  
http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1860#4
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 06:40 06-01-2010 | Исправлено: 01MDM, 06:48 06-01-2010
   

Страницы: 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

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


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru