Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах

Автор: Kirillhome
Дата сообщения: 07.09.2006 22:02
Shish_kebab
Нет уж, выложи сюда получившийся у тебя bat-файл, напиши, какие у тебя ошибки - и тогда вместе разберёмся. ОК?
Автор: GarEx
Дата сообщения: 08.09.2006 15:45
Добрый день.

Подскажите, можно ли запустить два батника одновременно? Если в файле прописать start qwer.bat
start asdf.bat, то они соответственно подряд и запустятся. Может это как-то с помощью at сделать или еще какие варианты? Надо именно чтобы было приписано все в одном файле, который и запускается.

И еще скажите, можно ли значок у батника сменить? Если через свойства менять, то создается ярлык с новым значком на этот бат-файл, а у самого батника не меняется. Может это возможно в самом батнике прописать, типа ICON=list.ico?

И еще вопрос. Как узнать текущую букву диска, с которого происходит запуск батника?
Автор: Kirillhome
Дата сообщения: 08.09.2006 15:57
GarEx

Цитата:
И еще вопрос. Как узнать текущую букву диска, с которого происходит запуск батника?

К примеру, так:
%CD:~0,2%%

А по поводу одновременности - ну, на мой взгляд, АБСОЛЮТНО одновременно - невозможно...
Автор: GarEx
Дата сообщения: 08.09.2006 16:02
Ну совсем одновременно конечно же нельзя, ну хотя бы, чтобы второй батник не ждал окончания работы первого.
Автор: Kirillhome
Дата сообщения: 08.09.2006 16:23
GarEx
Так ведь ты так и написал:

Код:
start asdf.bat
start qwer.bat
Автор: GarEx
Дата сообщения: 08.09.2006 16:27
А что по поводу значка?
Автор: ViSiToR
Дата сообщения: 08.09.2006 17:33
GarEx

Цитата:
А что по поводу значка?

Вот один батничек (точнее он не совсем один ) - Reg Add For Create BATHiK, который пишет в реестер запись, это для того, чтобы потом можно было кликнуть правой кнопкой мыши, и в подпункте “Создать”, можно было создовать новые батники. А также, он создаёт иконку к батнику, если нужно поменять иконку, то до запуска батника, нужно подставить под иконку которая лежит рядом с ним, другую-свою, но с таким же именем (или менять имя в батнике). Иконка изменится после рестарта системы, но зато пункт появится секунд 20 после установки батника (или после пару нажатии на подпункт “Создать”). Иконку конечно можно будет и не устанавливать, я специальнол сделал выбор (батник будет спрашивать перед установкой иконки), т.к изначально я расчитывал что батник будет прописывать пункт в “Создать”.
Автор: PerpleXOR
Дата сообщения: 09.09.2006 10:19
2 Smitis
Спасибо, твой вариант почти сработал. Надо указывать полный путь к исполняемому файлу. То есть чтобы применить удаленно reg файл надо написать:

psexec -s \\remote_machine -d c:\windows\regedit /s c:\ie.reg
Автор: Smitis
Дата сообщения: 09.09.2006 15:56
PerpleXOR


Цитата:
Цитата:P.S. И не надо задовать один и тот же вопрос в разных темах!

горю, приходится ускорять решение вопроса!

Это не ускорит решение вопроса, а наоборот, замедлит! Потому что напрягает отвечающих Суди сам. Допустим, я читаю вопрс в какой-либо теме и знаю на него ответ. Я трачу своё время отвечаю (очень часто перед ответом требуется проверка, скажем, того же скрипта, ну чтобы самому не ошибиться). Потом читаю другую тему и вижу, что там уже эта проблема давно решилась. Буду я тебе отвечать в следующий раз? Скорее всего нет. Более того, увидев один и тот же вопрос в разных темах, если ещё не ответил, то и отвечать не буду, ибо создаётся впечатление, что спрашивающий сам не знает, чего хочет.
Автор: Shish_kebab
Дата сообщения: 09.09.2006 19:04
Kirillhome
webfile.ru/1098186
Автор: hhr
Дата сообщения: 09.09.2006 21:09
подскажите, плиз, как вместо

Код:
md new_folder
copy old_folder\*.* new_folder
rd old_folder
Автор: Kirillhome
Дата сообщения: 09.09.2006 22:10
Shish_kebab
После небольшой проверки [more=вот что получилось]

Код:
@Echo Off
setlocal enabledelayedexpansion
set /A Day_Min=30
Set PATH_POISK="c:\!"

set T_Date=%DATE%
IF %T_DATE:~0,1%==0 (SET /A T_DAY=%T_DATE:~1,1%) else (SET /A T_DAY=%T_DATE:~0,2%)

IF %T_DATE:~3,1%==0 (SET /A T_MONTH=%T_DATE:~4,1%) else (SET /A T_MONTH=%T_DATE:~3,2%)

SET /A T_YEAR=%T_DATE:~6,4%

SET /A T_DAY=%T_DAY%-%Day_Min%

:_START

if !T_DAY! LEQ 0 (SET /A T_MONTH=!T_MONTH!-1
if !T_MONTH!==0 (
set /A T_YEAR=!T_YEAR!-1
SET /A T_MONTH=12
set /A T_DAY=31+!T_DAY!) else (
if !T_MONTH!==1 (Set /A T_Day=31+!T_DAY!)
if !T_MONTH!==2 (
SET /A INT_YEAR=!T_YEAR!/4
SET /A NEW_YEAR=!INT_YEAR!*4
IF !NEW_YEAR!==!T_YEAR! (Set /A T_Day=29+!T_DAY!) ELSE (Set /A T_Day=28+!T_DAY!))
if !T_MONTH!==3 (Set /A T_Day=31+!T_DAY!)
if !T_MONTH!==4 (Set /A T_Day=30+!T_DAY!)
if !T_MONTH!==5 (Set /A T_Day=31+!T_DAY!)
if !T_MONTH!==6 (Set /A T_Day=30+!T_DAY!)
if !T_MONTH!==7 (Set /A T_Day=31+!T_DAY!)
if !T_MONTH!==8 (Set /A T_Day=31+!T_DAY!)
if !T_MONTH!==9 (Set /A T_Day=30+!T_DAY!)
if !T_MONTH!==10 (Set /A T_Day=31+!T_DAY!)
if !T_MONTH!==11 (Set /A T_Day=30+!T_DAY!)
if !T_MONTH!==12 (Set /A T_Day=31+!T_DAY!)))
if !T_DAY! LSS 1 GOTO _START
rem echo %T_DAY% %T_MONTH% %T_YEAR%
setlocal disabledelayedexpansion
FOR /R %PATH_POISK% %%a IN (*.*) DO @Call :MY_DEL "%%a" %%~ta
GoTo :EOF

:MY_DEL
if "%2"=="" GOTO :EOF
SET F_DATE=%2
set /A F_YEAR=%F_DATE:~6,4%

IF %F_DATE:~0,1%==0 (
SET /A F_DAY=%F_DATE:~1,1%) else (
SET /A F_DAY=%F_DATE:~0,2%)

IF %F_DATE:~3,1%==0 (
SET /A F_MONTH=%F_DATE:~4,1%) else (
SET /A F_MONTH=%F_DATE:~3,2%)

set /A fl_udal=0
IF !F_YEAR!==!T_YEAR! (
IF !F_MONTH!==!T_MONTH! (
IF !F_DAY!==!T_DAY! (set /A fl_udal=1)))

if !fl_udal!==1 (copy %1 e:\!!)

GoTo :EOF
Автор: Refugee
Дата сообщения: 10.09.2006 01:51
Shish_kebab
Копировать по времени очень удобно xxcopy:
только вчерашние
xxcopy /da#1 /db#1 /fc /SGF "c:\program files" "куда"
позавчерашние и более поздние
xxcopy /da#2 /fc /SGF "c:\program files" "куда"

Kirillhome
Зачем писать set /A Day_Min=30 ?
строка "30" будет преобразована в точно такую же. Переменные могут хранить только строки. Разница будет только на восьмеричных числах типа 01.
Автор: Kirillhome
Дата сообщения: 10.09.2006 09:32
Refugee

Цитата:
Зачем писать set /A Day_Min=30 ?

Привычка для себя обозначать то, что будет "цифрами" (участвовать в вычислениях)


Цитата:
Копировать по времени очень удобно xxcopy

А xxcopy где взять???
Автор: Refugee
Дата сообщения: 10.09.2006 14:43
Kirillhome
>А xxcopy где взять???
На офсайте freeware edition, или в варезнике.
Автор: Mayskii
Дата сообщения: 10.09.2006 15:08
hhr


Цитата:
подскажите, плиз, как вместо

Код:
md new_folder
copy old_folder\*.* new_folder
rd old_folder



использовать что-то более короткое?
иначе говоря, как переместить папку?


Попробуй так:
после
new_folder\

поставь слэш, должно сработать.





Автор: Reznikoff
Дата сообщения: 11.09.2006 08:46
Здраствуйте товарищи. вот такой скрипт на 98 окне.

Код:
@echo off
echo Press N to load windows 98 now or white 5 minutes and Windows 98 will load
choice /N /C:yn
cls

if errorlevel 1 goto sleep
if errorlevel 2 goto end

:sleep
echo White 5 minutes...
sleep 300
echo end

:end
echo Button pressed
pause
Автор: Kirillhome
Дата сообщения: 11.09.2006 09:45
Reznikoff

Цитата:
проблема в том, что если нажать n то всегда срабатывает условие :sleep (хотя должно срабатывать условие :end). Почему?

Возможно, из-за CLS после CHOICE...
Автор: Shish_kebab
Дата сообщения: 11.09.2006 19:20

Цитата:
1) скопировать из "c:\Program Files\", а не из c:\ (Set PATH_POISK="c:\!")

Для пробы поставил ! а в рабочем исполнении из c:\Program Files\

Цитата:
Копировать по времени очень удобно xxcopy:
только вчерашние

В том то и дело что нужно сегодняшние из кучи файлов

---
Что то он у меня весь диск прошаривает ???

Добавлено:
Вот лог того, что происходит при выполнении, создал вертуальный диск u: и запустил
webfile.ru/1101000
Автор: Kirillhome
Дата сообщения: 11.09.2006 20:10
Shish_kebab

Цитата:
Что то он у меня весь диск прошаривает ???

С пути поиска и вниз...
А что, нужно только в указанной директории??? Что в поддиректориях - не интересует?
Тогда вместо

Код:
FOR /R %PATH_POISK% %%a IN (*.*) DO @Call :MY_DEL "%%a" %%~ta
Автор: Refugee
Дата сообщения: 11.09.2006 20:31
Shish_kebab
только сегодняшние:
xxcopy /h /da:. /fc /s "c:\program files" "куда"
хэлп прочитать вообще никак?
Автор: Shish_kebab
Дата сообщения: 11.09.2006 20:39

Цитата:
А только для сегодняшней даты (не универсальный вариант) - совсем просто:

Вот это то что нужно сенкс.
Да и за это пояснение

Цитата:
Тогда вместо
Код:
FOR /R %PATH_POISK% %%a IN (*.*) DO @Call :MY_DEL "%%a" %%~ta
Код:
FOR %%a IN (%PATH_POISK%\*.*) DO @Call :MY_DEL "%%a" %%~ta

тоже сенкс.


Добавлено:
Refugee

Цитата:
xxcopy /h /da:. /fc /s "c:\program files" "куда"
хэлп прочитать вообще никак?

Обязательно почту, но наде же иметь и альтернативные варианты
Автор: Reznikoff
Дата сообщения: 12.09.2006 08:09
Kirillhome
убрал CLS толку нет.
так же всегда выполняется первое условие. т.е. всегда errorlevel 1 внезависимоти от того, что ты там нажал. странно.
хотя errorlevel (цифра) правильная.
набрал echo %errorlevel%, выводится 1 или 2 в зависисимости от того, что выбрал
Автор: Kirillhome
Дата сообщения: 12.09.2006 09:34
Reznikoff
Ну, тогда может и надо

IF %ERRORLEVEL%=1 ...
Автор: Bol970
Дата сообщения: 12.09.2006 09:54
Приветствую All.

Имеется надобность получить диапазон чисел месяца, предыдущей (от "сегодоня") недели.
Т.е. если брать за сегодня "12.09.2006",
то должно быть "4.09-10.09".

День недели начинается с понедельника.
Операционная система Win2k3 или WinXP.
Настройки стоят русские.

PS
или мне быстрее это на Pascal или С накликать.
Автор: ilovevirus
Дата сообщения: 12.09.2006 10:58
Доброго времени суток! Подскажите пожалуйста вот написал простенький файлик, нужно чтобы по его работе писался протокол (лог) - удачи или неудачи выполнения операций.

Файлик такой:
[
REM [Закрытие доступа к диску C:]
net share C /delete
net stop MуService

REM [Основной процесс]

REM [Открытие доступа к диску C:]
net share C=c: /GRANT:Everyone,FULL
net start MуService
]

И как прописать правильно условия, например если не удалось закрыть шару, то не выполнять основной процесс и т.д. Заранее СПАСИБО!
Автор: KapralBel
Дата сообщения: 12.09.2006 11:35
ilovevirus
Ести тебе надо вести логи удачи неудачи отдельно, То пользуйся

Код: Net Share C /Delete 1>C:\Log.log 2>C:\LogErr.log
Автор: Refugee
Дата сообщения: 12.09.2006 14:36
Bol970
week.js:
function month2(m) {return ("0"+(m.getMonth()+1)).slice(-2);};
d = new Date(); dow = d.getDay(); if (dow==0) dow=7;
mb=new Date(d.getTime() - (6+dow)*24*3600*1000);
sb=new Date(d.getTime() - (dow)*24*3600*1000);
WScript.Echo ( mb.getDate()+"."+month2(mb)+"-"+sb.getDate()+"."+month2(sb));

Автор: Bol970
Дата сообщения: 12.09.2006 15:22
Refugee

Большое спасибо.
То что нужно.
Автор: Zitz
Дата сообщения: 13.09.2006 14:26
Коллеги, помогите пожалуйста с проблемой. Из батника вызывается программа, потом анализируется код возврата, с которым она завершилась, что-то вроде if errorlevel 1 goto LABEL. Так вот, в 2000/XP все нормально, а в 9x errorlevel после вызова программы всегда равен 0. Насколько я понял дело здесь в том, что command.com в отличие от cmd.exe не дожидается, когда и с каким результатом завершится прога, а переходит к следующей команде (сама вызываемая прога 0 не возвращает ни при каких обстоятельствах). Как можно анализировать код возврата в 9х?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Вернуть библиотеку АТМ (поддержка шрифтов Type 1)


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