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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
William Gates

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть директория А в которой много поддиректорий 1,2,3 и т.д. и в них файлики с одним и тем же именем, напр. file.zip. Нужно скопировать каждый такой файлик в каталог В, в соответствующую поддиректорию (если файл был в каталоге 1, он и должен быть скопирован в каталог с именем 1), далее в директорию с текущей датой. Например, файл из каталога A\1\file.zip должен быть в каталоге  В\1\13.11.2009\file.zip. Заранее благодарю.

Всего записей: 22 | Зарегистр. 12-10-2007 | Отправлено: 13:06 18-11-2009
Slonevg

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Не получается не чего.
Может не так объяснил? Попробую заново: флешка, на ней папка, в папке батник. Папка и батник называются пусть одинаково например: 1.  Что надо написать в батнике который будет лежать на флешке рядом с папкой  что бы он запустил батник находящийся в папке 1 и называется 1?

Всего записей: 14 | Зарегистр. 17-11-2009 | Отправлено: 15:43 18-11-2009
fipa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день. подскажите пожалуйста.
Такая проблема, нужно создать батник, что бы он создавал папку например C:\temp, а если она существует, делал проверку и добавлял к ней +1 т.е. temp1, temp2 и т.д.
Если уже такой вопрос был, не ругайтесь, а киньте ссылку на ответ. =)
Спасибо

Всего записей: 1 | Зарегистр. 12-07-2007 | Отправлено: 16:36 18-11-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Slonevg
Внутренний путь к 1.(cmd|bat) на флешке известен? Значит:

Код:
 
call "%~d0\Путь\К\1\1.cmd"
 

Если в пути есть кириллические названия и батник сохранен в win-1251 то добавь в начало батника 'chcp 1251 1>nul'
 
 
Добавлено:
fipa

Код:
 
@echo off
setlocal
 
if not exist "C:\temp" (
    md "C:\temp"
    goto:eof
)
 
:go
set /a cnt+=1
if not exist "C:\temp%cnt%" (md "C:\temp%cnt%") else (goto:go)  
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:07 18-11-2009
Slonevg

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Путь к самой флешки неизвестен, на разных компах он будет разный
 
Добавлено:
Или может все правильно загвоздка дальше?
 
@echo off
xcopy *.* "C:\1" /Y /i
regedit /s 1.reg
exit
 
это 2 батник, который по идее должен скопировать все файлы которые есть рядом создав папку 1 на диске C и добавить данные в реестр.  
 
 
@ECHO off
call "..\1\1.bat"
popd  
 
Это батник Ваш.  Папка 1 создаётся, но туда копируется только ваш батник и все. Что я не так сделал?
 
Добавлено:
Или напишите как скопировать папку например 1 со всем содержимым в диск C и уже оттуда запустить батник

Всего записей: 14 | Зарегистр. 17-11-2009 | Отправлено: 18:18 18-11-2009
01MDM



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

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

Батник запускается с флешки? Я написал как это сделать без явного указания буквы диска.

Цитата:
@ECHO off
call "..\1\1.bat"
popd  
 
Это батник Ваш.

Без `pushd` не мой.
 
1.cmd и 2.cmd находятся на флешке
1.cmd - запускает 2.cmd из папки "1":

Код:
 
@echo off
call "%~d0\1\2.cmd"
 

2.cmd Копирует всю папку 1 на диск C: и добавляет значения в реестр. Зачем тогда батник в этой папке? Хозяин-барин:  

Код:
 
@echo off
pushd "%~dp0"
xcopy *.* "%SystemDrive%\1\"
regedit /s 1.reg
popd
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:45 18-11-2009
Serius1988

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день.  
В общем получилась такая ситуация :
1)мне нужно с папки 1 скопировать файлы с расширением *.txt на 2 ФТП сервера. причем на втором сервере нужно выставить файлам которые я копировал атрибуты 777 . (на обеих серверах существует огромное количество тхт файлов и если файл копируется с такм же именем которое там есть просто заменить файл)
2)все что происходило в cmd вывести в лог файл.
(в лог файл могу вывести но при следуещем выполнении старый лог затирается и создается новый а это не есть ГУД (((( )
 
 
вот что на данный момент имеется

Код:
 
ftp -s:d:\11\1\1.txt torg.zxq.net
ftp -s:d:\11\1\1.txt torg.zxq.net
 
 
 
 
set OUTPUT=last_log.txt
 
if "%STDOUT_REDIRECTED%" == "" (
    set STDOUT_REDIRECTED=yes
    cmd.exe /c %0 %* >%OUTPUT%
    exit /b %ERRORLEVEL%
)

 
код 1.txt

Код:
 
login
password
bin
cd /incoming/incoming
prom off
mput d:\11\1\*.txt
quit
 


Всего записей: 1 | Зарегистр. 19-11-2009 | Отправлено: 16:10 19-11-2009
L0unEr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я конечно извиняюсь за вопрос, ответ наверняка был на одной из 300 страниц. но осилить это не могу.
Вроде бы и простая задача, а решить не могу.
Есть ехе. нужен его рестарт к примеру каждые 30 минут. Наиболее интересен компактный вариант. какой-либо батник. планировщиков задач не предлогать. вот =)

Всего записей: 4 | Зарегистр. 05-01-2007 | Отправлено: 03:54 20-11-2009
Slonevg

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Спасибо большое все заработало, правда 2 батник не понадобился (как Вы и говорили), вы мне очень помогли

Всего записей: 14 | Зарегистр. 17-11-2009 | Отправлено: 20:14 20-11-2009
vladjan7

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

Всего записей: 4 | Зарегистр. 06-11-2009 | Отправлено: 18:01 24-11-2009
Slonevg

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

Всего записей: 14 | Зарегистр. 17-11-2009 | Отправлено: 08:31 25-11-2009
01MDM



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

Цитата:
Подскажите пожалуйста, как в батнике произвести проверку, файл нулевой длинны или нет.  


Код:
 
@echo off
for %%i in (file.ext) do (
     if %%~zi==0 (echo This file is zero length) else (echo %%~zi)
)
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:10 25-11-2009
vladjan7

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Большое спасибо, а то уж думал через такой "бред", как сравнение с нулевым файлом решить задачу:
 
fc.exe  1.txt 2.txt
ECHO %ERRORLEVEL%

Всего записей: 4 | Зарегистр. 06-11-2009 | Отправлено: 11:17 25-11-2009
YoungBatman



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Товарищи, вот скомпилил справочный хтмл, который присоединен к шапке, в более удобный chm-архивчик. Можно прикрепить ссылку в шапку.
 
Справка по командам Windows

Всего записей: 8 | Зарегистр. 01-10-2008 | Отправлено: 12:41 25-11-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YoungBatman
Все бы хорошо, но:
 

 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 14:00 25-11-2009 | Исправлено: 01MDM, 14:00 25-11-2009
dskj

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

Код:
FOR /F "tokens=1 usebackq"  %%i in (listlan.txt) do (dir "%%i\C$\test\" /b | find "test")

 
из listlan.txt беруться компьютеры из которых надо удалить папки. после на этих компьютерах идет поиск папок test. А вот как дальше передать удаление их не пойму.
Сначала пытался удалять test* , но командная строка принимала за полностью имя. А не отрабатывала как в bash'e  

Всего записей: 23 | Зарегистр. 25-10-2009 | Отправлено: 15:37 25-11-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dskj
Попробуй так, `del' не понимает сетевых путей (в справке об этом ни гугу) - через сетевой диск, примапенный `pushd':

Код:
 
@echo off
for /f "tokens=1" %%i in (listlan.txt) do (
    pushd "%%i\C$"
    del "test\test"
    popd
)
 

 
Естественно не тестировал, т.к. нет нужного окружения.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:15 25-11-2009 | Исправлено: 01MDM, 16:17 25-11-2009
dskj

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Вы меня не поняли, в вашем случае насколько я понел удалит только папку test, но не удалит test1 , test2 , ... testN .  Вот для этого в моей строчке прописан find он ищет из всего что выдаст dir ( в моем случае он находил test , test1, test2 и т.д. ) а вот как дальше передать на удаление я не понял.

Всего записей: 23 | Зарегистр. 25-10-2009 | Отправлено: 00:16 26-11-2009 | Исправлено: dskj, 00:18 26-11-2009
01MDM



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

Цитата:
Вы меня не поняли, в вашем случае насколько я понел удалит только папку test,

Да, не понял, папки удаляются другой командой:

Код:
 
@echo off
for /f "tokens=1" %%i in (listlan.txt) do (
    pushd "%%i\C$\test"
    for /f "tokens=*" %%j in ('dir /b /a:d test*') do rd /s /q "%%j"
    popd
)  
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 08:31 26-11-2009
YoungBatman



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

Цитата:
YoungBatman  
Все бы хорошо, но:

 
 
Делал файл на работе, скачал по вышеприведенной ссылке ид дома(думал можа по дороге на файлобменник побился), однако:
 

 
Может я что то делаю не так?
 

Всего записей: 8 | Зарегистр. 01-10-2008 | Отправлено: 17:20 26-11-2009 | Исправлено: YoungBatman, 17:24 26-11-2009
   

Страницы: 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.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru