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

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



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

Код:
 
@echo off
setlocal
 
for /f "tokens=*" %%i in ('dir /b *.txt') do set "postfix=%%~ti" && call:ren "%%i"
goto:eof
 
:ren
set "postfix=%postfix:.=-%"
set "postfix=%postfix::=_%"
set "postfix=%postfix: =_%"
ren %1 "%~n1_%postfix%%~x1"
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 08:23 12-07-2009 | Исправлено: 01MDM, 08:24 12-07-2009
newhk



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

Всего записей: 331 | Зарегистр. 02-02-2009 | Отправлено: 10:56 13-07-2009
TNR



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как реализовать закачку с ftp только вновь появившихся там файлов... не закачивая предидущие ... ???

Всего записей: 1574 | Зарегистр. 15-03-2004 | Отправлено: 15:45 14-07-2009
HaK1R



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

Цитата:
только вновь появившихся там файлов

значит тех, которые появились "сегодня"?

Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 21:48 14-07-2009
TNR



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

Всего записей: 1574 | Зарегистр. 15-03-2004 | Отправлено: 03:02 15-07-2009 | Исправлено: TNR, 11:36 15-07-2009
KEM



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как сделать поиск и удаление файлов по маске(по расширению или по полному имени файла или только по имени)? Возможно есть где почитать про это поподробнее.

Всего записей: 388 | Зарегистр. 02-09-2004 | Отправлено: 10:56 15-07-2009
01MDM



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

Код:
 
del /s /a C:\*.txt
 

 
Удалит все *.txt с диска C:
Тоже самое если удалять по имени - filename.*
 
ЗЫ. Поосторожней с этим..

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



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

Цитата:
KEM  
Код:  
del /s /a C:\*.txt  
Удалит все *.txt с диска C:  
Тоже самое если удалять по имени - filename.*  
 
ЗЫ. Поосторожней с этим..

 
А со всех дисков?

Всего записей: 388 | Зарегистр. 02-09-2004 | Отправлено: 14:08 15-07-2009
01MDM



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

Код:
 
@echo off
for %%i in (q w e r t y u i o p s d f g h j k l z x c v n m) do (
    if exist %%i: del /s /a %%i:\*.txt
)
 


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



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

Код:
for /f "tokens=1,2,3 delims=:" %%a in ('echo %time:~0,8%') do (
  set hh=%%a
  set mm=%%b
  set ss=%%c
  set h1=%%:~0,-1a
  set m1=%%:~0,-1b
  set s1=%%:~0,-1c
  set h2=%%:~1a
  set m2=%%:~1b
  set s2=%%:~1c
)

 
вот если вместо

Код:
  set h1=%%:~0,-1a
  set m1=%%:~0,-1b
  set s1=%%:~0,-1c
  set h2=%%:~1a
  set m2=%%:~1b
  set s2=%%:~1c

завешить цыкл и уже после него всатавить

Код:
  set h1=%hh:~0,-1%
  set m1=%mm:~0,-1%
  set s1=%ss:~0,-1%
  set h2=%hh:~1%
  set m2=%mm:~1%
  set s2=%ss:~1%

то все замечательно... но как бы это осуществить в цыкле?

Всего записей: 197 | Зарегистр. 15-05-2009 | Отправлено: 14:43 15-07-2009
Elroir



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

Код:
 
setlocal enabledelayedexpansion
for /f "tokens=1,2,3 delims=:" %%a in ('echo %time:~0,8%') do (  
  set hh=%%a  
  set mm=%%b  
  set ss=%%c  
  set h1=!hh:~0,-1!  
  set m1=!mm:~0,-1!  
  set s1=!ss:~0,-1!  
  set h2=!hh:~1!  
  set m2=!mm:~1!  
  set s2=!ss:~1!
)  
 


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 17:12 15-07-2009
ScreamWolf



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
спасибо...
а setlocal enabledelayedexpansion обязательно?
 
и у меня возник еще вопросик...
хочу чтобы батник создавал скрипт и запускал его
а смысл скрипта это вопрос с вариантами ДА или НЕТ
и после выполнения скрипта в батник возвращался код возврата...
 
HS_MESSAGE - не предлагать, т к некоторые антивиры воспринимают его за вирь!
через SET /p не очень хочется... т к в батнике многое через скрипты запускает и как-то портить общую картину... =(

Всего записей: 197 | Зарегистр. 15-05-2009 | Отправлено: 17:26 15-07-2009 | Исправлено: ScreamWolf, 17:34 15-07-2009
igor_andreev

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

Цитата:
чтобы батник создавал скрипт и запускал его  
а смысл скрипта это вопрос с вариантами ДА или НЕТ  
и после выполнения скрипта в батник возвращался код возврата...  

Типа такого:

Код:

@echo off
echo.WScript.Quit(MsgBox("Are you sure?",292+4096,"Delete file"))>tmp.vbs
cscript tmp.vbs //nologo
echo %errorlevel%
del tmp.vbs

Всего записей: 1668 | Зарегистр. 08-12-2004 | Отправлено: 22:50 15-07-2009 | Исправлено: igor_andreev, 23:00 15-07-2009
Elroir



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

Цитата:
а setlocal enabledelayedexpansion обязательно?

Да.
http://forum.ru-board.com/topic.cgi?forum=62&topic=9040&start=633&limit=1


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 11:35 16-07-2009
ScreamWolf



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev
спасибо, то что нада))
 
Добавлено:
Elroir

Цитата:
Я отвечал на этот вопрос на 28-й странице:

прости, помню что где-то видел...
 
спасибо за инфу
 
Добавлено:
igor_andreev
а можешь подсказать еще коды кнопок, типа  Отмена, Повтор, ОК, и есть ли возможность так же указать значение окна типа Вопрос, Предупреждение, Ошибка и т.д....
 
Буду очень презнателен
 
 
Добавлено:
igor_andreev
уже не надо, нашел Статейку

Всего записей: 197 | Зарегистр. 15-05-2009 | Отправлено: 17:38 16-07-2009
daks12

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спецы, вопрос. Просмотрел эту ветку, покопал кучу инфы. Задача тривиальна: вывести в переменную текущий день недели (для подставления потом в параметры ntbackup'a). Не получается. Для наглядности пробую пока создавать папку вместо переменной. Делаю так:
for /f "tokens=*" %%i in ('wmic path win32_LocalTime get DayOfWeek') do ( mkdir %%i )
В результате создаются две папки: "4" (четверг сегодня) и DayOfWeek. А вызывается mkdir трижды почему-то. В третий раз ей передается какой-то непечатный символ. Результат если запустить батник дважды (для наглядности, первы раз он папки молча создаст):
 
D:\Backup_work\1>2
Подпапка или файл DayOfWeek уже существует.
Подпапка или файл 4 уже существует.
Ошибка в синтаксисе команды.
 
Соответственно нужно отфильтровать для перебора только те значения, где присутствуют цифры, причем в начале переменной. Делаю:  
 
for /f "tokens=*" %%i in ('wmic path win32_LocalTime get DayOfWeek ^| findstr ^[0-9]*') do ( mkdir %%i )
 
Получаю то же самое Как бы отфильтровать последний результат, довольствуясь первыми двумя (DayOfWeek и 4) Самое интересное, что на XP отрабатывает нормально. А на W2k3 ошибка.

Всего записей: 4 | Зарегистр. 05-07-2009 | Отправлено: 18:02 16-07-2009
ScreamWolf



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

Код:
set cnf=%systemdrive%\config.cnf
if not exist "%cnf%"(
  echo %time:~0,8% Файл конфигурации не найден!
  echo %time:~0,8% Возможно это первый запуск...
) else (
  echo %time:~0,8% Найден файл конфигурации
  set ttl=Установка
  set wdw=Просмотреть файл конфигурации?
  chcp 1251 >nul
  echo.WScript.Quit(MsgBox("%wdw%",292+4096,"%ttl%"))>tmp.vbs
  chcp 866 >nul
  cscript tmp.vbs //nologo
  if %errorlevel%==6 (
    echo %time~0,8% Просмотр файл конфигурации
    echo --------------------------------------------------------------Файл конфигурации
    type %conf%
    echo -------------------------------------------------------------------------------
  )
  del tmp.vbs
)
pause

 
Добавлено:
daks12

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


Код:
@echo off
for /f "tokens=*" %%i in ('wmic path win32_LocalTime get DayOfWeek') do set day=%%i
echo %day%
pause

Посмотри еще здесь

Всего записей: 197 | Зарегистр. 15-05-2009 | Отправлено: 18:08 16-07-2009 | Исправлено: ScreamWolf, 18:19 16-07-2009
daks12

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

Цитата:
Код:
@echo off
for /f "tokens=*" %%i in ('wmic path win32_LocalTime get DayOfWeek') do set day=%%i
echo %day%
pause
 

В том-то и дело, что так изначально и делал. У меня на другом компе (WinXP) скрипт, построенный на этой конструкции давно и успешно работает. Интересовало, почему на серваке W2K3 он не отрабатывает. Данный результат пишет вот что:
 
D:\Backup_work\1>3
Режим вывода команд на экран (ECHO) отключен.
Для продолжения нажмите любую клавишу . . .
 
А если заменять echo %day% на mkdir %day%, то  
 
D:\Backup_work\1>3
Ошибка в синтаксисе команды.
Для продолжения нажмите любую клавишу . . .
 
То есть последним ему передается какой-то символ, при передаче которого команде mkdir получаем ошибку в синтаксисе!  

Цитата:
Посмотри еще здесь

Видел, нужно именно через wmi, понять почему не работает, хотя должно! А то - все-таки хоть и рабочий, но костыль.
 

Всего записей: 4 | Зарегистр. 05-07-2009 | Отправлено: 19:12 16-07-2009
ScreamWolf



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
daks12
у меня вроде работает на ура и в ХП и 2000-2003
 
выполни

Код:
for /f "tokens=*" %%i in ('wmic path win32_LocalTime get DayOfWeek') do echo %%i >>log.txt

 
и дай посмотреть что пишется в LOG.txt...
PS
самому интересно блин))
 
Добавлено:
Подскажите как при помощи батника и кода

Код:
set "ttl=Ввод"
set "wdw=Введите пароль:"
set "xmpl=12345678"
chcp 1251 >nul
echo wscript.echo inputbox("%wdw%","%ttl%", "%xmpl%")>tmp.vbs
chcp 866 >nul
for /f "delims=" %%a in ('cscript //nologo tmp.vbs') do set pass=%%a
del /q tmp.vbs
 

вводимый пароль был бы скрыт под звездочками?

Всего записей: 197 | Зарегистр. 15-05-2009 | Отправлено: 19:28 16-07-2009 | Исправлено: ScreamWolf, 19:48 16-07-2009
daks12

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Результат команды 3.bat:
 
D:\Backup_work\1>3
 
D:\Backup_work\1>chcp 1251  1>nul
 
D:\Backup_work\1>for /F "tokens=*" %i in ('wmic path win32_LocalTime get DayOfWe
ek') do echo %i  1>>log.txt
 
  1>>log.txt k\1>echo DayOfWeek
 
  1>>log.txt k\1>echo 4
 
  1>>log.txt k\1>echo
 
D:\Backup_work\1>
 
Содержимое log.txt:
 
DayOfWeek    
4            
Режим вывода команд на экран (ECHO) включен.
 
То есть последний раз вызывается с пустой строкой в качестве параметра и честно говорит состояние эха, включено или нет. Посмотрел в хексе -  
 
00000000 44 61 79 4F │ 66 57 65 65 │ 6B 20 20 0D │ 20 0D 0A 34 │ 20 20 20 20 │ 20 20 20 20 │ 20 20 0D 20 │ 0D 0A D0 E5  DayOfWeek  . ..4          . ....
00000020 E6 E8 EC 20 │ E2 FB E2 EE │ E4 E0 20 EA │ EE EC E0 ED │ E4 20 ED E0 │ 20 FD EA F0 │ E0 ED 20 28 │ 45 43 48 4F  ... ...... ...... .. ..... (ECHO
00000040 29 20 E2 EA │ EB FE F7 E5 │ ED 2E 0D 0A │                                                                      ) ..........
 
 
Добавлено:
Эхх, не совсем корректно отобразило.
Цитата:
│
- это вертикальные черточки. Остальное - точками, патамушо кодировка вражеская - 866 кодовая, а у меня тут UTF8, но хекс-коды правильные.

Всего записей: 4 | Зарегистр. 05-07-2009 | Отправлено: 19:51 16-07-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