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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Malegik79

Код:
 
@echo off
for /f "tokens=1,2" %%i in ('wmic path win32_LocalTime get Month^,WeekInMonth') do (
    set "Month=%%i"
    set "WeekInMonth=%%j"
)
 
for /f "tokens=%Month%" %%i in ("Jan Feb Mar Apr May Jun Jul Aug Sep Okt Nov Dec") do md %%i_%WeekInMonth%  
 

 
 
Добавлено:
Elroir
да, правильней со слешем %~d0\myfolder\myfolder2\*.*    

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



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xcopy /E /d /q /Exclude:exclude.txt "%userprofile%\рабочий стол\Привет" "%userprofile%\рабочий стол\Привет2"  
 
В exclude.txt:.mp3  
 
При копировании этого в cmd.exe выходи сообщение:  
C:\Documents and Settings\администратор_РХ>xcopy /E /d /q /Exclude:exclude.txt "  
%userprofile%\рабочий стол\Привет" "%userprofile%\рабочий стол\Привет2"  
Не удается прочесть файл: exclude.txt  
 
Помогите плз уже не знаю что делать=(

Всего записей: 29 | Зарегистр. 08-07-2009 | Отправлено: 10:41 09-07-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
quakerock
Где лежит exclude.txt?

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



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
exclude.txt лежит в "%userprofile%\рабочий стол\Привет" тоесть в папке из которой копирую

Всего записей: 29 | Зарегистр. 08-07-2009 | Отправлено: 13:29 09-07-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
quakerock
Тогда прописывай путь к exclude.txt или он должен быть в той директории, где ты находишься, запуская xcopy.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:46 09-07-2009
Malegik79

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM  
Спасибо огромное)
Поместил код в батник test.bat при запуске из консоли выдает:
C:\>test.bat
ОШИБКА:
Код = 0x80020009
Описание = Ошибка.
Услуга = Dispatch
 
01MDM помогите плиз

Всего записей: 7 | Зарегистр. 16-06-2009 | Отправлено: 15:25 09-07-2009 | Исправлено: Malegik79, 15:38 09-07-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Malegik79
Если бы не было wmic.exe (как в XP Home), то понятно. А так, у меня всё отрабатывает корректно. Проверь еще раз батник, если не копировал с форума, то может где-то описАлся?
 
Еще могут быть проблемы с разными "сборками".

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:03 09-07-2009
Malegik79

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM Спасибо за оперативность)
Эту ошибку у меня вызывет строчка "wmic path win32_LocalTime"
Винда 2003 сервер энтерпрайз сп2 сборка 3790. Если эта инфа ничего не дает может подскажешь в каком направлении копать?)

Всего записей: 7 | Зарегистр. 16-06-2009 | Отправлено: 16:16 09-07-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Malegik79
Если честно, то затрудняюсь ответит. Хоть и сомневаюсь, что на w2k3, другие классы WMI. Попробую по-другому решить задачу.

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



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

Цитата:
Господа, напишите пожалуйста скрипт для создания из текущей даты папку с названием месяца и номером недели, типа "July_2"

неделя начинается первого числа или в понедельник?
т.е. 13 июль 2009 года, как папка должна называться?

Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 16:27 09-07-2009
Malegik79

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HaK1R
В понедельник "Jul_3"
 
Добавлено:
01MDM
Запустил батник на другой машине отработал без ошибок)) только я туплю может... я не увидел созданную папку... или я не туда смотрю, папка должна создатся в текущей директории?

Всего записей: 7 | Зарегистр. 16-06-2009 | Отправлено: 16:30 09-07-2009
01MDM



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

Цитата:
папка должна создатся в текущей директории?

Там где батник. Или пропиши путь к папке:

Код:
 
... Dec") do md "C:\Path\To\%%i_%WeekInMonth%"
 

На самом деле рассчитать текущую неделю в месяце не совсем тривиальная задача, если пользоваться только переменной %date%. Хоть наработки есть, но что-то не ладится...  
 
Не знаю, на сколько это будет корректно, возможны ошибки:

Код:
 
@echo off
setlocal
 
for /f "tokens=1-3 delims=." %%i in ("%date%") do (
    set "d=1%%i" & set "m=1%%j" & set "y=1%%k"
)
for %%i in (d m) do set /a %%i-=100
set /a y-=10000
 
if %y% geq 2029 (set "step=-28,2001") else (set "step=28,2029")
for /l %%i in (%y%,%step%) do set "y=%%i"
 
for /f %%i in ('set /a y%%4') do if %%i==0 (set "feb=1") else (set "feb=0")
for /f "tokens=%m%" %%i in ("0 31 59 90 120 151 181 212 243 273 304 334") do set /a yd=%%i+d
if %m% gtr 2 set /a yd+=feb
 
set /a wd=(((y-2001)/4+(y-2001)*365)+yd)%%7+1
set /a sun=d+7-wd
for /l %%i in (%sun%,-7,1) do set /a wm+=1
 
for /f "tokens=%m%" %%i in ("Jan Feb Mar Apr May Jun Jul Aug Sep Okt Nov Dec") do md "C:\Path\%%i_%wm%"
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:27 09-07-2009 | Исправлено: 01MDM, 22:26 09-07-2009
HaK1R



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

Код:
@echo off
setlocal enabledelayedexpansion
set date=%data%
if %date:~0,1%==0 (
  set /a dd=%date:~1,1%
) else (
  set /a dd=%date:~0,2%
)
if %date:~3,1%==0 (
  set /a mm=%date:~4,1%
) else (
  set /a mm=%date:~3,2%
)
set /a yyyy=%date:~-4%
set /a ficsyyyy=2007
set /a daysago=0
call:kountdays
set /a daysago=%daysago%-7*(%daysago%/7)
set /a week=1
set /a monday=%dd%-%daysago%
call :numweek
call :nummonth
md "%month%_%week%" 1>nul 2>&1
goto:eof
 
:nummonth
if %mm%==1 (set month=Jan&goto :EOF)
if %mm%==2 (set month=Feb&goto :EOF)
if %mm%==3 (set month=Mar&goto :EOF)
if %mm%==4 (set month=Apr&goto :EOF)
if %mm%==5 (set month=May&goto :EOF)
if %mm%==6 (set month=Jun&goto :EOF)
if %mm%==7 (set month=Jul&goto :EOF)
if %mm%==8 (set month=Aug&goto :EOF)
if %mm%==9 (set month=Sep&goto :EOF)
if %mm%==10 (set month=Oct&goto :EOF)
if %mm%==11 (set month=Nov&goto :EOF)
if %mm%==12 (set month=Dec&goto :EOF)
goto :EOF
:numweek
if %monday% LEQ 0 (goto :EOF)
set /a week+=1
set /a monday-=7
goto :numweek
:kountdays
set /a leapyear=%ficsyyyy%-1
set /a leapyear=%leapyear%-4*(%leapyear%/4)
set /a leapyear=(%leapyear%+1)/4
if %yyyy% GTR %ficsyyyy% (
set /a daysago+=365+%leapyear%
set/a ficsyyyy+=1
goto:kountdays
)
if %mm%==1 (set /a daysago+=0)
if %mm%==2 (set /a daysago+=31)
if %mm%==3 (set /a daysago+=59)
if %mm%==4 (set /a daysago+=90)
if %mm%==5 (set /a daysago+=120)
if %mm%==6 (set /a daysago+=151)
if %mm%==7 (set /a daysago+=181)
if %mm%==8 (set /a daysago+=212)
if %mm%==9 (set /a daysago+=243)
if %mm%==10 (set /a daysago+=273)
if %mm%==11 (set /a daysago+=304)
if %mm%==12 (set /a daysago+=334)
if %mm% geq 3 (set /a daysago+=%leapyear%)
set /a daysago+=%dd%-1
goto:eof
 

Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 17:49 09-07-2009 | Исправлено: HaK1R, 17:52 09-07-2009
quakerock



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
To 01MDM
 
Спасибо огромно. Все заработало=) Собака была зарыта в том, что я куда только не закинул этот приславутый exclude.txt, но до исходника не дошел.

Всего записей: 29 | Зарегистр. 08-07-2009 | Отправлено: 09:17 10-07-2009
Malegik79

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
HaK1R
Респектище вам огромное оба варианта отрабатывают как надо)

Всего записей: 7 | Зарегистр. 16-06-2009 | Отправлено: 10:34 10-07-2009
shotgunsneon

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет! Есть вот такая задачка:  
С помощью батника необходимо создавать текстовые документы на подобии как это делает Windows (Текстовый документ.txt, Текстовый документ (2).txt, Текстовый документ (3).txt и т.д.).
Я честно попытался реализовать это сам, но у меня ничего не получилось) Вот что я написал:
 
@echo off
set i=0
for %%i in ("file.txt") do (set /a new_num=i + 1)
.> file(%new_num%).txt 2>nul
start file(%new_num%).txt
 
Текстовый документ создается, но всегда с одним именем, при этом старый txt затирается. Как сделать так, чтобы при наличии файла file(1).txt автоматически создавался файл file(2).txt. Или если есть file(2).txt, то создавался file(3).txt и т.д.
 
Я планировал в переменную i занести конечную цифру в имени файла, но не знаю как это реализовать)

Всего записей: 2 | Зарегистр. 11-07-2009 | Отправлено: 09:54 11-07-2009
HaK1R



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

Код:
@echo off
chcp 1251 1>nul
set /a i=2
set "name=Текстовый документ"
if not exist "%name%.txt" (
  .>"%name%.txt" 2>nul
  start "" "%name%.txt"
  goto :EOF
)
:2
if not exist "%name% (%i%).txt" (
  .>"%name% (%i%).txt" 2>nul
  start "" "%name% (%i%).txt"
  goto :EOF
)
set /a i+=1
goto :2

 
Добавлено:
shotgunsneon
а еще вот так тоже может устроет

Код:
@echo off
chcp 1251 1>nul
set /a i=2
set "name=Текстовый документ"
if not exist "%name%.txt" (start "" "%windir%\NOTEPAD.EXE" "%name%.txt"&goto :EOF)
:2
if not exist "%name% (%i%).txt" (start "" "%windir%\NOTEPAD.EXE" "%name% (%i%).txt"&goto :EOF)
set /a i+=1
goto :2

Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 13:01 11-07-2009 | Исправлено: HaK1R, 14:07 11-07-2009
shotgunsneon

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HaK1R
Первый вариант прямо то что я хотел, спасибо большое)

Всего записей: 2 | Зарегистр. 11-07-2009 | Отправлено: 14:37 11-07-2009
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А как можно к имени файла добавить "_дата_время создания" ?
т.е. было proba.txt от 11-07-2009 1:00
переменовали в proba_11-07-2009_1_00.txt
При этом имя файла нам заранее не известно ;( , т.е. надо переменовать все файлы. но с определённым расширением. (по маске)

Всего записей: 1468 | Зарегистр. 28-10-2007 | Отправлено: 01:13 12-07-2009 | Исправлено: vitrzn, 01:19 12-07-2009
Maza_Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vitrzn
К имени файла добавляется дата модификации файла:

Код:
 
@Echo Off
 
Set Folder=C:\Temp
 
For %%A In (%Folder%\*.*) Do Call :_Ren "%%A"
Pause
 
GoTo :EOF
 
:_Ren
Set nTime=%~t1
Set nTime=%nTime: =_%
Set nTime=%nTime::=_%
 
Ren %1 "%~n1_%nTime%%~x1"
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:22 12-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.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru