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

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

Автор: pavel1978
Дата сообщения: 14.04.2008 04:42
Simple Crypt, спасибо - помогло!
Автор: dumsik
Дата сообщения: 14.04.2008 07:10
Еще один способ выяснения текущего дня недели с помощью утилиты из Reskit now.exe

SETLOCAL EnableDelayedExpansion

call :GetWeekdayNumber

echo %dd%

GOTO :EOF

:GetWeekdayNumber
now.exe | FIND /I "mon" && (SET dd=1 & GOTO :EOF)
now.exe | FIND /I "tue" && (SET dd=2 & GOTO :EOF)
now.exe | FIND /I "Wed" && (SET dd=3 & GOTO :EOF)
now.exe | FIND /I "Thu" && (SET dd=4 & GOTO :EOF)
now.exe | FIND /I "Fri" && (SET dd=5 & GOTO :EOF)
now.exe | FIND /I "Sat" && (SET dd=6 & GOTO :EOF)
now.exe | FIND /I "Sun" && (SET dd=7 & GOTO :EOF)
GOTO :EOF
Автор: HelpAbout
Дата сообщения: 14.04.2008 09:20
Simple Crypt, спасибо!
Автор: wolf0425
Дата сообщения: 14.04.2008 16:14
Rush, на глазок на мегабайтном логе разницы в скорости не вижу
Автор: Ilyansk
Дата сообщения: 15.04.2008 12:54
По вопросу что-то ничего не нашлось, а он простой: как запустить TheBat! с параметрами из BAT файла?
Они (Риты), как нарочно затруднили автоматизацию. То у них восклицательный знак по умолчанию в имени директории, то символ ключа - слэш!
У меня кострукция
start /max "c:\program files\the bat!\thebat.exe" /nologo /mailu=....
дает ошибку:
Недопустимый ключ: "/nologo".
По-моему это сообщение команды start
что делать? нужно что бы батник закрывался, а почтовик продолжал работать.
Автор: Tipulatoid
Дата сообщения: 15.04.2008 15:34
Ilyansk

Цитата:
что делать? нужно что бы батник закрывался, а почтовик продолжал работать.


Код: start "" /max "c:\program files\the bat!\thebat.exe" /nologo /mailu=....
Автор: Grim_Repo
Дата сообщения: 15.04.2008 19:19
Здравствуйте, вообщем имеется батник который спрашивает откуда копировать файлы и куда копировать... Но проблема в том что батник спрашивает "С какого hdd сделать backup?"... В идеале - надо ввести просто букву диска, без : или \ так как батник их сам подставит... Тоесть требуется чтобы в случае если юзер введет C:\ или C: - батник удалял : или :\ автоматом...
Так же для "Куда копировать?" нужно чтоб батник делал следующее:
1. После ввода пути - батник должен проверить наличие диска на который юзер хочет копировать... Тоесть - юзер ввел H:\backup\1234, батник выполнил "if exist H: (goto EXIST) else goto NOT EXIST"
2. Требуется чтобы в случае если юзер введет H:\backup\1234\ - батник удалил последнюю \ так как батник сам ее проставит...
Так же есть проблема в том что надо через xcopy создавать папку - вида DD.MM.YYYY_HH-MM-SS ... Но если поставить - %date%_%time% - xcopy не может создать папку так как %time% выглядит как - HH:MM , но в винде нельзя создать папку с именем в котором имеется :

P.S.
Повторю свои старые вопросы на которые так и не последовало ответов:

Цитата:
Еще хотелось бы узнать - как заставить батник записывать ВСЕ свои действия в лог...

Цитата:
Кстати - реально ли сделать так чтобы, батник сохранял свои последнии настройки в файл конфигурации... И считывал их оттуда...


Заранее, спасибо!
Автор: king_stiven
Дата сообщения: 15.04.2008 20:43
Grim_Repo

Цитата:
так как %time% выглядит как - HH:MM , но в винде нельзя создать папку с именем в котором имеется :

for /f "tokens=x delims=:" %%e in ("%time%") do (

Разбери %time% как строчку, справка тебе в помощь. По остальным вопросам, всё это многократно обсуждалось, советую скачать все страницы темы, начиная со свежих.
set /?

Цитата:
Кстати - реально ли сделать так чтобы, батник сохранял свои последнии настройки в файл конфигурации... И считывал их оттуда...

Вполне.


Автор: shva
Дата сообщения: 15.04.2008 21:10
Простой вопрос, а ставит нас в тупик!
set a=1 & echo %a%
Какого рожна не выводит присвоенного значения переменной?
Помогите разобраться с тремя соснами!
Автор: Tipulatoid
Дата сообщения: 15.04.2008 21:21
Grim_Repo

Цитата:
Тоесть требуется чтобы в случае если юзер введет C:\ или C: - батник удалял : или :\ автоматом...


Код: @echo off
set /p drive=Введите диск
set drive=%drive:~0,1%
Автор: 01MDM
Дата сообщения: 15.04.2008 22:43
shva

Код:
@echo off
setlocal enabledelayedexpansion
set a=1 & echo !a!
Автор: Nagual
Дата сообщения: 16.04.2008 02:53
Grim_Repo

Цитата:
Так же есть проблема в том что надо через xcopy создавать папку - вида DD.MM.YYYY_HH-MM-SS ... Но если поставить - %date%_%time% - xcopy не может создать папку так как %time% выглядит как - HH:MM , но в винде нельзя создать папку с именем в котором имеется :


for /f "tokens=1-6 delims=:., " %a in ("%date% %time:~,-3%") do echo "[%c.%b.%a_%d.%e.%f]"
Автор: Elroir
Дата сообщения: 16.04.2008 02:56
shva

Цитата:
Простой вопрос, а ставит нас в тупик!
set a=1 & echo %a%
Какого рожна не выводит присвоенного значения переменной?

Строка выполняется как одна команда. Соответственно, CMD подставляет туда значение переменных до начала выполнения. А что у было нас в переменной "а" до выполнения? Правильно - ничего. Либо переводи чтение переменной на следующую строку, либо используй вариант, показанный 01MDM выше.
Автор: Ilyansk
Дата сообщения: 16.04.2008 08:45
Tipulatoid
Спасибо за отклик. Почтовик я так и запускаю (определяю немного не так). Если не сложно, поясните, плз, почему конструкция
start "" /max "%smailclient%" /nologo /mailu=....
не принимает высказывание /nologo за ключ, а в случае
start /max "%MAILER%" /nologo /BATCH:"%wd%rass.txt"
принимает?
ЗЫ %MAILER% несет полный путь к почтовику

Elroir
в таком случае используется инструкция
setlocal enabledelayedexpansion
и выражение
set a=1 & echo !a!
т.е. переменная обрамляется восклицательными знаками. Внимание: выражение setlocal enabledelayedexpansion - палка о двух концах. Из текстовых переменных исчезают при выводе восклицательные знаки. Когда я столкнулся с этим применил при обращении к ней инструкцию setlocal DISABLEDELAYEDEXPANSION, потом снова включал setlocal enabledelayedexpansion
Автор: shva
Дата сообщения: 16.04.2008 09:40
01MDM
Elroir
Ilyansk
Спасибо за подсказку и разъяснения!

Elroir
Тяжело воспринимается фраза "Строка выполняется как одна команда", ведь очевидно, что в строке две команды объединенные символом "&" !?
Автор: bmax
Дата сообщения: 16.04.2008 10:21
Народ, помогите кто может!

Просьба не остылать к мануалам, т.к. ограничен по времени и мозгу.
Есть необходимость в батнике, который бы копировал из папки D:\1 последний созданный файл, причем время создания должна учитываться вплоть до секунд.
В папку D:\2.

Во второй части задач на бат нашел что-то подобное но реализовать под себя не смог.

Существует ли возможность производить копирование файла в зависимости от наличия в содержимом файле кодового слова(у него нет четкой позиции в файле). Если да, хотелось бвы увидеть пример.

Заранее благодарю, всех откликнувшихся за ответы.
Автор: JohnRD
Дата сообщения: 16.04.2008 10:23
добрый день

подскажите как лучше определить ОС
если по команде ver

XP выдает -- Microsoft Windows XP [Version 5.1.2600]
Microsoft Windows XP [Версия 5.1.2600]
Vista -- Microsoft Windows [Версия 6.0.6000]
Vista с SP1 Microsoft Windows [Версия 6.0.6001]

то можно так
FOR /f "TOKENS=*" %%i IN ('ver ^| FIND "Версия 5.1.2600"') DO GOTO XP_RU
FOR /f "TOKENS=*" %%i IN ('ver ^| FIND "Version 5.1.2600"') DO GOTO XP_EN
FOR /f "TOKENS=*" %%i IN ('ver ^| FIND "6.0.6000"') DO GOTO Vista
FOR /f "TOKENS=*" %%i IN ('ver ^| FIND "6.0.6001"') DO GOTO Vista

но чтото не очень нравится
какие есть еще варианты - более красивые

спасибо


Автор: ebrr
Дата сообщения: 16.04.2008 10:39
Подскажите пожалуйста как удалить определенную папку с помощью батника (допустим c:\Test)
Автор: king_stiven
Дата сообщения: 16.04.2008 10:52
bmax

Код: for /f "tokens=*" %%c in ('dir "D:\1\*.*" /t:c /b /a:-d') do (
xcopy "D:\1\%%c" D:\2
goto :eof
)
Автор: KapralBel
Дата сообщения: 16.04.2008 10:59
JohnRD
Что надо определить?
Виста, ХР, или 2000? или еще наличие SP

Вообще лучше искать только по номеру билда, не учитывая текстовые строки

ebrr
RD /?
Автор: Rush
Дата сообщения: 16.04.2008 11:00
Вот такой вопрос вдруг встал - понадобилось менять раскладку клавиатуры при помощи батника. Можно? Через сендкейс, наверное...
Автор: JohnRD
Дата сообщения: 16.04.2008 11:05
KapralBel

нужно определить что за система, если виста то один батник пускать если ХР то другой

только и те и другие могут быть русские анклийские с СП без получается много GOTO

мне интересно или Виста или ХР и все

спасибо
Автор: Elroir
Дата сообщения: 16.04.2008 11:14
Ilyansk

Цитата:
в таком случае используется инструкция

Прочитай внимательно мое сообщение. А также сообщение 01MDM, про которое я там пишу.


Цитата:
поясните, плз, почему конструкция
start "" /max "%smailclient%" /nologo /mailu=....
не принимает высказывание /nologo за ключ, а в случае
start /max "%MAILER%" /nologo /BATCH:"%wd%rass.txt"
принимает?

Для команды start, первое выражение в кавычках - это заголовок окна. За ним может идти вызов самой программы с ключами или ключи самого start-a.

Добавлено:
shva

Цитата:
Тяжело воспринимается фраза "Строка выполняется как одна команда", ведь очевидно, что в строке две команды объединенные символом "&" !?

ОК, перефразирую - подстановка переменных в строку, состоящую из несколькох команд, объедененных символом &, выполняется до запуска первой из этих команд.
Автор: 01MDM
Дата сообщения: 16.04.2008 11:34
Rush

Цитата:
Можно? Через сендкейс, наверное...


Да, vbs - он тебе ближе, как я понял. Или последний nircmd-2.10

C:\WINDOWS\system32\kb16.com - у меня не работает.
Автор: ebrr
Дата сообщения: 16.04.2008 11:40
KapralBel
king_stiven


Цитата:
rd c:\Test


Спасибо, а как отключить программу если она исполняется. Т.е. в папке Test есть определенный файл к примеру test.doc, если он выполняется (работает) то папка не удаляется. Как можно отключить выполнение данного файла (закрыть его) и удалить папку вместе с этим файлом?
Автор: Rush
Дата сообщения: 16.04.2008 11:56
01MDM

Цитата:
Да, vbs - он тебе ближе, как я понял. Или последний nircmd-2.10

Ну это-то понятно. Я через батник думал. И без сторонних средств - это обязательно...
Ладно, попробую поискать в WMI, чтоб без сендкейса VBS...
Автор: KapralBel
Дата сообщения: 16.04.2008 12:53
JohnRD

Код: @Echo Off
FOR /f "TOKENS=*" %%i IN ('ver ^| FIND "5.1.26"') DO GOTO XP
FOR /f "TOKENS=*" %%i IN ('ver ^| FIND "5.2.37"') DO GOTO 2003
FOR /f "TOKENS=*" %%i IN ('ver ^| FIND "6.0.60"') DO GOTO Vista
GoTO :EOF

:XP
Echo XP
GoTO :EOF

:Vista
Echo Vista
GoTO :EOF

:2003
Echo 2003
GoTO :EOF
Автор: ebrr
Дата сообщения: 16.04.2008 13:00

Цитата:
Если нет ключа комм.строк, который завершает работу
TaskKill /?
Но нужно твердо знать, какая прога занимает файлы


Т.е. надо написать TaskKill/Word.exe?
А можно завершить выполнение именно фанного файла test.doc?
Автор: bmax
Дата сообщения: 16.04.2008 13:23
Благодарю king_stiven за ответ. Работает!


for /f "tokens=*" %%c in ('dir "D:\1\*.*" /t:c /b /a:-d') do (
xcopy "D:\1\%%c" D:\2
goto :eof
)

Еще вопросик, если позволите,
Как перед копированием посчитать количество файлов в папке D:\2 и при копировании
последнего созданного файла переименовывать его следующим образом:

11сегодняшняя дата(только число)кол-во файлов(если 1, то что бы записывалось 01 ) расширение тоже менялось
например: qwerty.txt -> 111601.dvc

Спасибо всем откликнувшимся!
Автор: GGS
Дата сообщения: 16.04.2008 13:47
- Удалено автором (был не прав)

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Сброс пароля администратора


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