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

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



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

Код:
@echo off
pushd "%~1"
for /f "tokens=*" %%i in ('dir /s /b') do call r "%%~fi"
pause
popd
goto :EOF
 
r
set "name=%~1"
if not "%name%"=="%name:~0,230%" (echo %name%)
goto :EOF

 
Добавлено:
o00oalex

Цитата:
Как прописать пробел я знаю - надо весь текст заключить в %

я может не понял что тебе нужно, мне казалось что надо " использовать.

Цитата:
^ % # $

все нормально печатает, только % надо удвоить

Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 23:00 22-06-2009
waterbladeMASTER

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Hak1R все конечно гуд!)) но мне надо это дело через DIR используя ключи /s /b.

Всего записей: 2 | Зарегистр. 26-05-2008 | Отправлено: 12:48 23-06-2009
ScreamWolf



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

Цитата:
setlocal enabledelayedexpansion  
set ServerName=192.168.0.1    
for /f "tokens=1* delims==" %%h in ('set ServerName') do (    
  set /a error=1  
  for /f "tokens=*" %%i in ('ping -n 1 "%%i" ^| find /i "TTL=" 2>&1') do (set /a error=0)  
  if !error!==1 (    
    echo %date% %time:~0,8% Сервер %%i - недоступен    
  ) else (    
    echo %date% %time:~0,8% Сервер %%i - доступен    
  )    
)  

не работает =((
 
а за
Цитата:
@echo off  
pushd "C:\1\"  
for /f "tokens=1*" %%a in ('dir /b *.lnk') do ren "%%~fa %%b" "%%~a%%~xb"  
popd

огромное СПАСИБО, все работает как часы!!!
 
Добавлено:
HaK1R
почему-то ругаеться на ... "выделено красным цветом"
удалив, получил желаемое! СПАСИБО...!

Цитата:
setlocal enabledelayedexpansion  
set ServerName=192.168.0.1    
for /f "tokens=1* delims==" %%h in ('set ServerName') do (    
  set /a error=1  
  for /f "tokens=*" %%i in ('ping -n 1 "%%i" ^| find /i "TTL=" 2>&1') do (set /a error=0)    
  if !error!==1 (    
    echo %date% %time:~0,8% Сервер %%i - недоступен    
  ) else (    
    echo %date% %time:~0,8% Сервер %%i - доступен    
  )    
)  

 
 
Добавлено:
ОШИБОЧКА!!!
 
батник почеку-то выводит положительный результат проверки сервера даже в то время когда такого ip в сети даже нет...
 
Т.е. получается всегда доступны все сервера (((

Всего записей: 197 | Зарегистр. 15-05-2009 | Отправлено: 13:51 23-06-2009 | Исправлено: ScreamWolf, 13:59 23-06-2009
volser

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

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 15:06 23-06-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ScreamWolf
Попробуй такую конструкцию:

Код:
 
@echo off
1>nul ping -n 1 192.168.0.1 && (
    echo Пингуется
) || (
    echo Не пингуется
)
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 15:09 23-06-2009
01MDM



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

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

Ищи mtee.exe, tee.exe

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:34 23-06-2009
Cosmogor



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго всем времени суток.
 
У меня вопрос:  
Возможно ли открыть своиство папки
сразу же на (Типы файлов)
с помощью батника?
Ниже код открывает свойство папки (Общие)
 
Код:
RunDll32.exe shell32.dll,Options_RunDLL 0
 
или прийдётся довольствоваться Свойство папки (Общие)
 
Спс.

Всего записей: 230 | Зарегистр. 22-04-2009 | Отправлено: 20:34 23-06-2009
HaK1R



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

Цитата:
батник почеку-то выводит положительный результат проверки сервера даже в то время когда такого ip в сети даже нет...
 
Т.е. получается всегда доступны все сервера (((

думаю вариант 01MDM будет нормально работать
 
Cosmogor

Цитата:
Ниже код открывает свойство папки (Общие)  

по-моему этот вопрос требует знание не батников, а знание команд rundll32.

Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 22:01 23-06-2009
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые, подскажите возможно ли с помощью батника сделать так :
 
есть папка 111 , в ней программа (качалка) создаёт временные папки с файлами, после скачивания файла в папке 111 остаётся временная папка с файлом *.txt (название файла и папки может быть ЛЮБЫМ).
Задача:
проверить содержимое вложенных папок в 111 и если во вложенной папке есть только один файл *.txt , то удалить эту папку.
Ну или попроще, если размер вложенной папки не более 100кб - удалить .
 
p.s. как удалять пустые папки я знаю, а вот как удалить не пустые, но уже не нужные - нет.

Всего записей: 1497 | Зарегистр. 28-10-2007 | Отправлено: 03:11 24-06-2009
HaK1R



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

Цитата:
о мне надо это дело через DIR используя ключи /s /b

не совсем понял, как это должно выглядеть. по-моему я использовал DIR с ключами /s /b
 
 
Добавлено:
vitrzn

Цитата:
если размер вложенной папки не более 100кб - удалит

 

Код:
@echo off
pushd "c:\jkdjlkd\111\"
for /f "tokens=*" %%a in ('dir /b /ad') do (
  if %%~za LEQ 102400 (
    del /f /s /q /a "%%~fa"
    rmdir /q /s "%%~fa"
    )
  )

Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 09:26 24-06-2009
sanni00015



Дышу Фотовоздухом
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток.
Помогите разобраться вот с чем, в окне MS-DOS приглашение выглядит так
C:\Documents and Settings\user\_
, user имеет прова Администратора, смена на С:\ не проходит
Видимо дело в том, что ОСь Pirer Pen Edition и там это сделанно сборщиком, можете подсказать как исправить?

Всего записей: 943 | Зарегистр. 19-06-2009 | Отправлено: 15:14 24-06-2009 | Исправлено: sanni00015, 15:45 24-06-2009
goletsa



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ибо вы уже находитесь на C:\
 
cd ..\..\ в помощь.
 
Это стандартное поведение интерпретатора.

Всего записей: 5801 | Зарегистр. 21-06-2005 | Отправлено: 16:37 24-06-2009
sanni00015



Дышу Фотовоздухом
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемый, goletsa, спасибо.
Приношу свои извинения за беспокойство.

Всего записей: 943 | Зарегистр. 19-06-2009 | Отправлено: 16:46 24-06-2009 | Исправлено: sanni00015, 18:21 24-06-2009
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите решить ещё одну задачку!
Как можно добавить к имени вложенной папки имя корневой папки:
.\123\
.\123\ab\
.\123\aa\
.\123\as\
ну и т.д.
надо
.\123\
.\123\ab_123\
.\123\aa_123\
.\123\as_123\
 
 
Добавлено:
HaK1R
СПС !!! как нельзя лучше !

Всего записей: 1497 | Зарегистр. 28-10-2007 | Отправлено: 15:22 25-06-2009
Nushaba

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет всем, подскажите пожалуйста, как реализовать следующее:
Батник раз в 10 минут проверяет наличие файла vl0.zip
Если файла не оказалось, скрипт закрывается.
Если файл есть, скрипт продолжается.
 
А продолжается вот что:
move /y C:\papka\Job\temp\vl0.zip E:\baza\CP\
C:\progra~1\1Cv77\bin\1cv7s.exe config /dC:\baza /nJob /p*****
/@C:\baza\Job\AutoExchage.prm
тут далее отправка почты, в общем всё это работает, но хочется реализовать автоматизацию, что бы само выполняло автообмен по почте без моего участия.

Всего записей: 26 | Зарегистр. 13-04-2009 | Отправлено: 12:30 26-06-2009 | Исправлено: Nushaba, 12:32 26-06-2009
Fannat



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хочу добавить запись в реестр, но строка содержащая кавычки обрабатывается не так, как хотелось бы. Пробовал по аналогии с find, заменой одинарных кавычек на двойные - не помогает.
Исходная строка команды: reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v Proga /t REG_SZ /d ""\\server\Pro gi\proga.exe" /silent"
 
Можно попробовать заменить пробелы в пути на %20, но хотелось бы на будущее знать.

Всего записей: 283 | Зарегистр. 25-11-2005 | Отправлено: 14:34 26-06-2009
Lorusk



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите пожалуйста решить задачу.
Опишу ее в кратце:  
Нужны два батника(или 1 не знаю поскольку не силен в их написании):
При запуске 1 выполняется работа по поиску на винчестере с буквой допустим Е:, определенных папок(screenshots,images, photos и т.д.) при их наличие поиска в них файлов (типа допустим jpg, bmp, gif) с их последовательным перенесением на другой диск для хранения , допусти H:. Нужно чтобы папки на нем создовались по типу :
(Имя новой папки)=(Путь старой папки без названия папки , являющейся критерием поиска)
H:\User123_12042009_Krim\*.*=E:\User123\12042009\Krim\photo
И 2 батник :
Он должен запускаться при подключении через интерфейс USB внешнего HDD допустим с буквой  M:\ и выполнять операцию по копированию файлов с диска H:\  на него с сохранением структуры папок
Т.е. по сути синхронизировать структуру H:\ c M:\ по следующему принципу:
Если файла на диске M:\ нет то просто копировать его, если файл на диске есть(их имена совпадают) добавить к имени хранимого на M:\  _old, а затем скопировать новый файл с H:\
При следующих синхронизациях, если файлы снова совпадают по имени - повторить тот же процесс только с изменением _old на _old00 и так до 2-3 олдов( для возможности возврата к более ранним версиям)
Нужно для хранени в структурированном виде фоток и изображений, с возможностью возврата к более ранним версиям.
Еще былобы не плохо еслибы в конце после old Через _ была прописанна дата смены имени файла, легче будет ориентироваться когда был сделанн файл.
 
Заранее спасибо, тем кто поможет, сам я не в состоянии сделать это, не силен в программировании =((

Всего записей: 2 | Зарегистр. 11-01-2007 | Отправлено: 17:20 26-06-2009
ScreamWolf



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

Цитата:
@echo off  
1>nul ping -n 1 192.168.0.1 && (  
    echo Пингуется  
) || (  
    echo Не пингуется  
)  

На сколько все просто оказалось - спасибочки работает!!!

Всего записей: 197 | Зарегистр. 15-05-2009 | Отправлено: 19:17 26-06-2009
01MDM



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

Код:
 
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v Proga /t REG_SZ /d """"\\server\Pro gi\proga.exe""" /silent"  
 

 
 
Добавлено:
vitrzn

Код:
 
@echo off
 
pushd "123"
for /f "tokens=*" %%i in ('cd') do (
    for /f "tokens=*" %%j in ('dir /b /a:d') do ren "%%j" "%%j_%%~nxi"
)
popd
 

 
Добавлено:
Lorusk
На первую часть вопроса:

Код:
 
@echo off
 
for %%a in (screenshots photos images) do (
    for /f "tokens=*" %%b in ('dir /b /s /a:d "e:\%%i"') do (
        pushd "%%b"
        2>nul md "h:%%~pb"
        for %%c in (*.jpg *.gif *.bmp) do copy "%%c" "h:%%~pb"
        popd
    )
)
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:47 26-06-2009
HaK1R



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
01MDM
Lorusk
Думаю ты имел ввиду

Код:
@echo off
 
for %%a in (screenshots photos images) do (
    for /f "tokens=*" %%b in ('dir /b /s /a:d "e:\%%a"') do (
        pushd "%%b"
        2>nul md "h:%%~pb"
        for %%c in (*.jpg *.gif *.bmp) do copy "%%c" "h:%%~pb"
        popd
    )
)


Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 10:33 27-06-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.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru