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

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

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

Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118

   

KLASS



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

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

Всего записей: 11450 | Зарегистр. 12-10-2001 | Отправлено: 04:28 24-09-2002 | Исправлено: Elroir, 19:35 11-09-2007
yurkesha



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну начнем с того что
Код:
for /f "tokens=2*" %%i in ('reg query "hkcu\software\microsoft\windows\currentversion\explorer\shell folders" /v personal ^| findstr /s /i reg_sz') do set MyDocs=%%j )
выделенная закрывающая скобка является лишней...
 
Добавлено: ну и если переменная возвращается с хвостовыми пробелами (и эти пробелы уже сидят в реестре) то можно использовать такой код:
Код:
:MM1
set last_char=%MyDocs:~-1%
if "%last_char%"==" " (set MyDocs=%MyDocs:~0,-1%) & goto MM1


----------
Всем непричастным рекомендую прогулки на свежем воздухе

Всего записей: 2757 | Зарегистр. 15-12-2003 | Отправлено: 13:14 28-06-2007 | Исправлено: yurkesha, 13:20 28-06-2007
KapralBel



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

Код:
chcp 1251>nul  
for /f "tokens=2*" %%i in ('reg query "hkcu\software\microsoft\windows\currentversion\explorer\shell folders" /v personal ^| findstr /s /i reg_sz') do set MyDocs=%%j
echo %MyDocs%

Поубирай все концевые пробелы

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 13:18 28-06-2007
netman



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Биг сенкс. Оригинальное решение.
Еще раз сенка.
KapralBel

Цитата:
set trigers=c:\file.txt
for /f "tokens=3 delims=:" %%a in (%trigers%) do Call :St %%a
GoTo :EOF
 
:st  
if %1==0 (echo No Error found) else (echo Error)
GoTo :EOF  

 

Всего записей: 308 | Зарегистр. 22-09-2003 | Отправлено: 13:40 28-06-2007
Grisha_Tamashi_SAN



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

Цитата:
Поубирай все концевые пробелы

 
Да, БИг СенькС.

Всего записей: 49 | Зарегистр. 17-09-2002 | Отправлено: 13:57 28-06-2007
Fraerok



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно ли как-то упростить вот такой вот батник: Подробнее...

Всего записей: 1727 | Зарегистр. 11-05-2006 | Отправлено: 01:32 30-06-2007 | Исправлено: Fraerok, 01:35 30-06-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fraerok
Можно . Попробуй так:

Код:
 
@echo off
setlocal enabledelayedexpansion
REG DELETE "HKLM\SOFTWARE\Classes\OpenOffice.org.reg4msdocmsi" /ve /f
set ".doc=1"&set ".dot=2"&set ".rtf=2"&set ".pot=8"
set ".pps=7"&set ".ppt=7"&set ".xls=3"&set ".xlt=4"
for %%a in (.doc .dot .rtf .xls .xlt .pot .pps .ppt) do (
ASSOC %%a=OpenOffice.org%%a
FTYPE OpenOffice.org%%a="%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe" -o "%%1"
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org%%a\shell\new\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -n \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org%%a\shell\print\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -p \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org%%a\shell\printto\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -pt \"%%2\" \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org%%a\DefaultIcon" /v "" /d "%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe,!%%a!"
)
 


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 02:06 30-06-2007
Fraerok



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
Спасибо! Убрал лишние пробелы в конце строк и раотает.
 
P.s. Потом попробую по аналогии переделать еще пару батников, если что - вернусь)

Всего записей: 1727 | Зарегистр. 11-05-2006 | Отправлено: 14:03 30-06-2007
0177055964

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пожалуйста, подскажите, как через BAT-файл  
сначала 1. изменить дату
затем 2. запустить программу  
ПОСЛЕ запуска 3. восстановить дату.
1 и 3 - знаю, но этап 3 проходит только после ЗАВЕРШЕНИЯ запущенной программы.
Заранее благодарен.

Всего записей: 7 | Зарегистр. 04-07-2007 | Отправлено: 16:29 04-07-2007
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
0177055964
start "C:\Program Files\SuperProga\ZlobnyVirus.exe"

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 16:50 04-07-2007
RwR



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Это снова я. Как папке, в которой сейчас работает файл *.cmd назначить временную переменную? Ну типа %MainDir%.

Всего записей: 287 | Зарегистр. 20-09-2006 | Отправлено: 22:43 04-07-2007
KapralBel



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

Код:
@Echo Off
Set MainDir=%~dp0
 

 
Еще один способ
Если надо что бы возвращатся в эту папку
то меняй путь командой PushD C:\Folder
А возвращайся PopD

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 23:31 04-07-2007
RwR



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

Всего записей: 287 | Зарегистр. 20-09-2006 | Отправлено: 23:36 04-07-2007
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ALL всемогущий
Мучился, мучился... все, сдаюсь:
Куча подкаталогов. Надо найти и скопировать все файлы вида en.name.ext в name.ext (в то же подкаталог, где будет найден файл).
То что у меня получилось даже показывать не буду - слишком монстроидально и не копирует файлы, содержащие в имени символ &
Может кому задачка интересной покажется? - Был бы очень благодарен...

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 01:11 05-07-2007
Elroir



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

Код:
 
@echo off
setlocal enabledelayedexpansion
set "folder=c:\temp"
for /r %folder% %%a in (en.*) do (
set "name="%%~nxa""
set "name="!name:~4,-1!""
copy "%%a" "%%~dpa!name:~1,-1!"
)
 

Вместо "c:\temp" впиши свой фолдер.

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:31 05-07-2007
Maza Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
mozers
А если в имени файла могут быть символы "!", то можно так:

Код:
 
@echo off
for /r c:\temp %%a in (en*.*) do Call :copy_ "%%a"
goto :eof
 
:copy_
set "file=%~nx1"
copy "%~1" "%~dp1\%file:~3%"
 

 
 
Добавлено:
mozers
Ещё один вариант, если неизвестно сколько символов может быть до точки, например (engl.name.ext):

Код:
 
@echo off
for /r c:\temp %%a in (en*.*) do (
for /f "tokens=2 delims=." %%b in ("%%~na") do copy "%%a" "%%~dpa%%b%%~xa")
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 09:02 05-07-2007
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir Maza Faka
СПАСИБО, спецы Вот что получилось в результате:
Код:
@ECHO OFF
SET LNG=ru
SUBST Z: .
 
FOR /R Z:\Setup %%a IN (%LNG%.*) DO (  
  FOR /F "tokens=2 delims=." %%b IN ("%%~na") DO (
    IF NOT EXIST "%%~dpa%%b%%~xa" (
      IF "%%~xa"==".ion" (
        ATTRIB -h -s "%%a"
        COPY /Y "%%a" "%%~dpa%%b%%~xa"
        ATTRIB +h "%%~dpa%%b%%~xa"
      ) ELSE (
        COPY /Y "%%a" "%%~dpa%%b%%~xa"
      )
    )
  )
)
Данный код внедрен в форум с помощью скрипта vladvro
Вроде как - работает

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 11:02 05-07-2007
0177055964

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Испробовал и НЕ проходит через start и call  и простое указание программы!
В любом случае время восстанавливается после завершения программы.
Иллюстрирую:
-------
 
echo off
cls  
Set Run_data=20.06.07
Set f_Day=%Date:~0,2%
Set f_Month=%Date:~3,2%  
Set f_Year=%Date:~6,4%  
Set C_date=%f_Day%.%f_Month%.%f_Year%
echo %C_date%
 
date %Run_data%
echo %Run_data%
 
rem start "C:\Program Files\Windows Media Player\wmplayer.exe"  
rem start /wait "C:\Program Files\Windows Media Player\wmplayer.exe"
call  "C:\Program Files\Windows Media Player\wmplayer.exe"
rem "C:\Program Files\Windows Media Player\wmplayer.exe"
rem ‡¤Ґбм ўбпЄЁ© а § Їа®Ёб室Ёв ®бв -®ўЄ  ЃЂ’-д ©«  ¤® § ўҐаиҐ-Ёп wmplayer.exe!
 
date %C_date%
echo %C_date% -ў®ббв -®ў«Ґ-  бЁб⥬- п ¤ в 
rem  
pause  
 

Всего записей: 7 | Зарегистр. 04-07-2007 | Отправлено: 12:06 05-07-2007
Maza Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
0177055964
Если в пути есть пробелы, то запускай так:

Код:
 
start "" "C:\Program Files\Windows Media Player\wmplayer.exe"
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 13:07 05-07-2007
Fannat



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Создал батничек, чтоб файл помещался в нужную директорию.
Если файл в сетке, то из фара работает, а из проводника - нет. пишет UNC path are not supported. Как исправить данную ситуацию?
 
Пример:
 
@echo off
copy /Y rarreg.key "%ProgramFiles%\Winrar\rarreg.key"
exit

Всего записей: 283 | Зарегистр. 25-11-2005 | Отправлено: 04:13 06-07-2007
Maza Faka



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

Код:
 
@echo off
copy /y rarreg.key "\\comp2\c\Program Files\Winrar\rarreg.key"
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:23 06-07-2007
   

Страницы: 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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru