Ru-Board.club
← Вернуться в раздел «Программы»

» Командная строка, батники, сценарии (bat, cmd)

Автор: Grisha_Tamashi_SAN
Дата сообщения: 28.06.2007 12:57
KapralBel


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


Да, БИг СенькС.
Автор: Fraerok
Дата сообщения: 30.06.2007 00:32
Можно ли как-то упростить вот такой вот батник: [more]
Цитата:
rem OpenOffice.org associations

REG DELETE "HKLM\SOFTWARE\Classes\OpenOffice.org.reg4msdocmsi" /ve /f

ASSOC .doc=OpenOffice.org.doc
FTYPE OpenOffice.org.doc="%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe" -o "%%1"
ASSOC .dot=OpenOffice.org.dot
FTYPE OpenOffice.org.dot="%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe" -o "%%1"
ASSOC .rtf=OpenOffice.org.rtf
FTYPE OpenOffice.org.rtf="%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe" -o "%%1"
ASSOC .xls=OpenOffice.org.xls
FTYPE OpenOffice.org.xls="%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe" -o "%%1"
ASSOC .xlt=OpenOffice.org.xlt
FTYPE OpenOffice.org.xlt="%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe" -o "%%1"
ASSOC .pot=OpenOffice.org.pot
FTYPE OpenOffice.org.pot="%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe" -o "%%1"
ASSOC .pps=OpenOffice.org.pps
FTYPE OpenOffice.org.pps="%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe" -o "%%1"
ASSOC .ppt=OpenOffice.org.ppt
FTYPE OpenOffice.org.ppt="%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe" -o "%%1"

REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.doc\shell\new\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -n \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.doc\shell\print\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -p \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.doc\shell\printto\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -pt \"%%2\" \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.doc\DefaultIcon" /v "" /d "%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe,1"

REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.dot\shell\new\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -n \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.dot\shell\print\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -p \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.dot\shell\printto\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -pt \"%%2\" \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.dot\DefaultIcon" /v "" /d "%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe,2"

REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.rtf\shell\new\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -n \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.rtf\shell\print\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -p \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.rtf\shell\printto\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -pt \"%%2\" \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.rtf\DefaultIcon" /v "" /d "%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe,2"

REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.pot\shell\new\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -n \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.pot\shell\print\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -p \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.pot\shell\printto\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -pt \"%%2\" \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.pot\DefaultIcon" /v "" /d "%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe,8"

REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.pps\shell\new\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -n \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.pps\shell\print\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -p \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.pps\shell\printto\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -pt \"%%2\" \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.pps\DefaultIcon" /v "" /d "%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe,7"

REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.ppt\shell\new\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -n \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.ppt\shell\print\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -p \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.ppt\shell\printto\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -pt \"%%2\" \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.ppt\DefaultIcon" /v "" /d "%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe,7"

REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.xls\shell\new\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -n \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.xls\shell\print\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -p \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.xls\shell\printto\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -pt \"%%2\" \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.xls\DefaultIcon" /v "" /d "%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe,3"

REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.xlt\shell\new\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -n \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.xlt\shell\print\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -p \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.xlt\shell\printto\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -pt \"%%2\" \"%%1\""
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.xlt\DefaultIcon" /v "" /d "%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe,4"

?

Это я чуть-чуть уже упростил, т.к. раньше вместо assoc и ftype я делал "в лоб":
Цитата:
REG DELETE "HKLM\SOFTWARE\Classes\.xxx" /ve /f
REG ADD "HKLM\SOFTWARE\Classes\.xxx" /v "" /d "OpenOffice.org.xxx"
REG ADD "HKLM\SOFTWARE\Classes\OpenOffice.org.doc\shell\open\command" /v "" /d "\"%ProgramFiles%\OpenOffice.org 2.2\program\soffice.exe\" -o \"%%1\""
[/more]
Автор: Elroir
Дата сообщения: 30.06.2007 01:06
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!"
)
Автор: Fraerok
Дата сообщения: 30.06.2007 13:03
Elroir
Спасибо! Убрал лишние пробелы в конце строк и раотает.

P.s. Потом попробую по аналогии переделать еще пару батников, если что - вернусь)
Автор: 0177055964
Дата сообщения: 04.07.2007 15:29
Пожалуйста, подскажите, как через BAT-файл
сначала 1. изменить дату
затем 2. запустить программу
ПОСЛЕ запуска 3. восстановить дату.
1 и 3 - знаю, но этап 3 проходит только после ЗАВЕРШЕНИЯ запущенной программы.
Заранее благодарен.
Автор: KapralBel
Дата сообщения: 04.07.2007 15:50
0177055964
start "C:\Program Files\SuperProga\ZlobnyVirus.exe"
Автор: RwR
Дата сообщения: 04.07.2007 21:43
Это снова я. Как папке, в которой сейчас работает файл *.cmd назначить временную переменную? Ну типа %MainDir%.
Автор: KapralBel
Дата сообщения: 04.07.2007 22:31
RwR

Код: @Echo Off
Set MainDir=%~dp0
Автор: RwR
Дата сообщения: 04.07.2007 22:36
Спасибо, вроде разобрался...
Автор: mozers
Дата сообщения: 05.07.2007 00:11
ALL всемогущий
Мучился, мучился... все, сдаюсь:
Куча подкаталогов. Надо найти и скопировать все файлы вида en.name.ext в name.ext (в то же подкаталог, где будет найден файл).
То что у меня получилось даже показывать не буду - слишком монстроидально и не копирует файлы, содержащие в имени символ &
Может кому задачка интересной покажется? - Был бы очень благодарен...
Автор: Elroir
Дата сообщения: 05.07.2007 00:31
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!"
)
Автор: Maza Faka
Дата сообщения: 05.07.2007 08:02
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
Дата сообщения: 05.07.2007 10:02
Elroir Maza Faka
СПАСИБО, спецы Вот что получилось в результате:
Код: @[no]ECHO[/no] OFF
[no]SET[/no] LNG[no]=[/no]ru
SUBST Z: .

[no]FOR[/no] /R [no]Z:\Setup[/no] [no]%%a[/no][no] IN[/no] ([no]%LNG%[/no].[no]*[/no])[no] DO[/no] (
[no]FOR[/no] /F "tokens[no]=[/no]2 delims[no]=[/no]." [no]%%b[/no][no] IN[/no] ("[no]%%~[/no]na")[no] DO[/no] (
[no]IF NOT EXIST[/no] "[no]%%~[/no]dpa[no]%%b%%~[/no]xa" (
[no]IF[/no] "[no]%%~[/no]xa"[no]==[/no]".ion" (
ATTRIB -h -s "[no]%%a[/no]"
[no]COPY[/no] /Y "[no]%%a[/no]" "[no]%%~[/no]dpa[no]%%b%%~[/no]xa"
ATTRIB [no]+[/no]h "[no]%%~[/no]dpa[no]%%b%%~[/no]xa"
)[no] ELSE[/no] (
[no]COPY[/no] /Y "[no]%%a[/no]" "[no]%%~[/no]dpa[no]%%b%%~[/no]xa"
)
)
)
)
Автор: 0177055964
Дата сообщения: 05.07.2007 11:06
Испробовал и НЕ проходит через 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

Автор: Maza Faka
Дата сообщения: 05.07.2007 12:07
0177055964
Если в пути есть пробелы, то запускай так:

Код:
start "" "C:\Program Files\Windows Media Player\wmplayer.exe"
Автор: Fannat
Дата сообщения: 06.07.2007 03:13
Создал батничек, чтоб файл помещался в нужную директорию.
Если файл в сетке, то из фара работает, а из проводника - нет. пишет UNC path are not supported. Как исправить данную ситуацию?

Пример:

@echo off
copy /Y rarreg.key "%ProgramFiles%\Winrar\rarreg.key"
exit
Автор: Maza Faka
Дата сообщения: 06.07.2007 07:23
Fannat
У меня работает:

Код:
@echo off
copy /y rarreg.key "\\comp2\c\Program Files\Winrar\rarreg.key"
Автор: Fannat
Дата сообщения: 06.07.2007 07:30
Maza Faka

А если компов много? Хотелось бы универсальный файлик.

Добавлено:
to Maza Faka

Ты его из сетки берешь и к себе кидаешь? Или кидаешь от себя в сетку?

Мне надо чтоб я его запускал с сервера, и мне на комп копировался файл.
Автор: Maza Faka
Дата сообщения: 06.07.2007 08:51
Fannat

Код:
@echo off
set number=10
For /l %%a in (1,1,%number%) do (
copy /y "\\comp%%a\c\Program Files\Winrar\rarreg.key" C:\comp%%a_rarreg.key
)
Автор: Accessor
Дата сообщения: 06.07.2007 09:59
Maza Faka
Наверное, более универсально и эффективно было бы прогнать этот цикл с использованием текстового файла в котором лежат имена компьютеров.
Такой список можно легко получить из AD с помощью команды

Код:
dsquery * forestroot -scope subtree -filter objectcategory=computer -attr name –l > @computers.txt
Автор: 0177055964
Дата сообщения: 07.07.2007 13:58
2 Member
Спасибо!
Автор: Bubek
Дата сообщения: 07.07.2007 15:20
Нужна помощь.
Есть два компа в сети, на одном установлен Консультатнт+ (база законов) : D:\consbel\Base,
обновляется раз в месяц, есть другой комп, на нем фтп, папка Base. (название диска пока не знаю)
Можно ли сделать так чтобы при запуске батника, файлы из D:\consbel\Base копировались на фтп. (название диска и фтп я надеюсь потом поменяю сам).
Автор: AmdAd
Дата сообщения: 08.07.2007 00:44
Кто подскажет как командой start запустить .exe файл с пробелами в имени. Bat'ник находится в директории с программой. Имя файла в кавычки ставить пробовал, но все равно ничего не запускается.
Автор: Elroir
Дата сообщения: 08.07.2007 00:46
AmdAd

Код: start "" "c:\program files\dir with spaces\program.exe"
Автор: violant
Дата сообщения: 08.07.2007 14:42
Подскажите пожалуйста. В некой папке создаются подпапки в формате yyyymmdd_hhmmss. Как в них попасть если надо папку ту которая создана по сегодняшнему дню
Автор: Maza Faka
Дата сообщения: 08.07.2007 16:59
violant

Цитата:
попасть если надо папку ту которая создана по сегодняшнему дню

В принципе не сложно, а если папок созданных в один день много? Ты лучше обрисуй задачу подробнее, а мы подумаем
Автор: violant
Дата сообщения: 09.07.2007 20:26
Maza Faka
На шаре сервера 1 раз в день создается папка указанного формата(ну а в ней файл). Создаются они исправно и папок с 2-мя одинаковыми днями не бывает. Но бывает что не создается. Хотелось бы еще проверку типа: если папка есть, то заходим в нее, а если нет -- то записываем какую-нибудь фразу типа "(date)(time) Папка не создалась " в файлик (*.log). В общем-то даже если 2-е папки на один день создадутся, то не имеет значение с какой из них брать.
Автор: Maza Faka
Дата сообщения: 10.07.2007 08:29
violant
Попробуй этот код:

Код:
@Echo off
set path_=d:\trash

for /f "tokens=4*" %%a in (
'dir /a:d /t:c %path_% ^| findstr /v /c:" ." ^| find "%date%"') do (
set folder=%%a
set var=%%b
)
if defined folder (
@if defined var (
set folder=%path_%\%folder% %var%) else (
set folder=%path_%\%folder%)) else (
echo Folder %date% today not create>> myLog.txt)

if defined folder cd /d "%folder%"
Автор: violant
Дата сообщения: 10.07.2007 11:07
Maza Faka
Спасибо получилось. Я уже просто сделал в Power Shell, но хотелось и в команд коме. Чуть-чуть логирования добавлю и вперед
Автор: royt
Дата сообщения: 10.07.2007 14:36
Кто подскажет, как сконвертировать содержимое переменной окружения из одной кодовой страницы в другую (OEM в ANSI)?
Очень хотелось бы вариант без вывода в файл (но можно с перенаправлением вывода, т.е. "конвейеризацией") и без использования "процедур" (типа CALL :...) - чтобы выполнить сию процедуру "одной строкой".

Пробовал использовать утилитку conset в варианте типа "echo %VAR%| convert ...|conset VAR=" - но в этом случае в переменную заносится перевод строки, что не позволительно. Как подавить вывод переводов строки?

А может есть какие утилитки, способные выполнять конвертацию содержимого переменной "по месту"?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879

Предыдущая тема: Problemi s zagruzkoy XP!


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.