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

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

Автор: ComradG
Дата сообщения: 05.06.2010 18:47
Ну что, товарищи! Проблема с созданием ярлыка из командной строки решилась (68%). Вероятно вам интересно знать каким обзом? Для начала приведу простой батник:

Код:
@echo off
setlocal
set verify=reg query hkcu\software\far
2>nul %verify% > nul
if %errorlevel%==1 (
echo There are nor Far items.
goto:eof
) else if %errorlevel%==0 (
echo Right, there are Far items.
goto:eof
)
endlocal
exit /b
Автор: 01MDM
Дата сообщения: 05.06.2010 20:01
ComradG
Ярлык то как создается? С помощью cscript?
По поводу месяца, то можно обработать так (исходя из твоего примера):

Код:
set /a "month=1%month%-100"
for /f "tokens=%month%" %%i in ("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec") do set "month=%%i"
Автор: ComradG
Дата сообщения: 05.06.2010 20:06

Цитата:
Ярлык то как создается? С помощью script?

С помощью обычного батника.

Цитата:
for /f "tokens=%month%" %%i in (Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec) do set "month=%%i"

Можно и так, просто то, как ты советуешь было испробавано давно, в некоторых системах, например 2k8, наблюдались баги.
Автор: 01MDM
Дата сообщения: 05.06.2010 20:12
ComradG

Цитата:
в некоторых системах, например 2k8, наблюдались баги.

Не должно быть. Я немного исправил, заключил все в кавычки, на XP и 7 все работает.

Цитата:
С помощью обычного батника.

Ну так покажи батник.

Автор: ComradG
Дата сообщения: 05.06.2010 20:17

Цитата:
Я немного исправил, заключил все в кавычки, на XP и 7 все работает.

Теперь знай, что на 2k8 этот трюк не совсем прокатывает.

Цитата:
Ну так покажи батник.

Ты перечитай мой пост, почему я пока его не могу показать. Когда все отшлифую, покажу, а с багами - не хочу. Пока толко могу указать в сторону синтаксиса vbs'ок и powershell'а.

Добавлено:

Цитата:
Пока только могу указать в сторону синтаксиса vbs'ок и powershell'а.

Имеется ввиду общий концепт синтаксиса.
Автор: 01MDM
Дата сообщения: 05.06.2010 20:25
ComradG

Цитата:
Теперь знай, что на 2k8 этот трюк не совсем прокатывает.

Что не прокатывает? Там другая cmd?

Цитата:
Пока толко могу указать в сторону синтаксиса vbs'ок и powershell'а.

Зачем тогда батник? Напиши link.ps1 и пользуйся.

Автор: ComradG
Дата сообщения: 05.06.2010 20:46
Давай не будем разводить флейм. Еще раз внимательно перечитай мой пост, пожалуйста. Я не про PowerShell говорю, а про батник, в котором используется "перекрестный" синтаксис, который, как оказывается, воспринимается командным интерпретатором, например:

Код:
VBScript
Set WSHShell = WScript.CreateObject("WScript.Shell")

Batch File
set WSHShell = "WScript.Shell"
Автор: Den13V
Дата сообщения: 05.06.2010 21:07
Altus
wolf0425

Ребят, текст я набирал руками, поетому мог сам по запаре его ручками поставить (сори), в самом тексте у меня пробела нет.

разобрался я с этой строкой, она просто заменяет пробел в конце результа, если ввести вместо " 0 " туже точку, результ таков rezerv_error_copy_time-9.36..rar (gj крайней мере у меня).
Автор: 01MDM
Дата сообщения: 05.06.2010 21:15
ComradG
Ну так покажи батник с "перекрестным" синтаксисом.

Цитата:
Командный интерпретатор серверной винды действительно немного устроен иначе.

Proof? Покажи скриншот a-la:

Автор: mugil_cephalus
Дата сообщения: 05.06.2010 22:13
ComradG
01MDM

Цитата:
в котором используется "перекрестный" синтаксис

заинтриговали, как ноу-хау
ComradG
есть еще почта
Автор: wolf0425
Дата сообщения: 05.06.2010 23:58
Den13V
Цитата:
разобрался я с этой строкой, она просто заменяет пробел в конце результа, если ввести вместо " 0 " туже точку, результ таков rezerv_error_copy_time-9.36..rar (gj крайней мере у меня).
ну да, строка заменяет все пробелы timenew на 0, это её единственная задача.
причем пробела в конце timenew быть не должно, соответственно и точке/нулю там браться неоткуда.
если у тебя там пробел есть - то это из-за пренебрежения кавычками в предыдущих строках.
а пробел в первом символе timenew - бывает до 10:00, и для борьбы c ним эту строку и писали.
Куда у тебя девается пробел перед 9 - вопрос интересный, мне пока кажется что ты тестируешь с каким-то другим временем, отличным от %time%

Добавлено:
ComradG

Цитата:
Командный интерпретатор серверной винды действительно немного устроен иначе.
на самом деле что-ли? А список функциональных отличий где посмотреть можно?

глубокие мысли о том, что и в VBScript и в Batch File используются похожие английские буковки и в обоих есть команды с именем set, пусть и с разной функциональностью - как-то навевают на мысли о мировом заговоре...
Автор: mugil_cephalus
Дата сообщения: 06.06.2010 12:15
wolf0425

Цитата:
глубокие мысли о том, что и в VBScript и в Batch File используются похожие английские буковки и в обоих есть команды с именем set, пусть и с разной функциональностью - как-то навевают на мысли о мировом заговоре...

похоже ComradG проник очень глубоко в структуру shell32.dll
Цитата:
Я тоже так думал пока не развинтил shell32.dll, но стоит попробовать копать в данном направлении, как поражаешься тому, что от нас утаивает винда и мелкософт вцелом.
что его уже "повязали"... и тайной сего магического камня он не сможет поделиться с форумом, а только с колымскими автохтонами

Автор: ComradG
Дата сообщения: 06.06.2010 12:40
Кхе, кхе. Я конечно понимаю, что за несколько лет жизни в Германии я стал асемилироваться и похоже мой русский стал совсем ни к черту. Что ж, попробую сформулировать свои мысли как можно точнее.
Итак,

Цитата:
на самом деле что-ли? А список функциональных отличий где посмотреть можно?

отличий там немного и все они описаны во встроенной справке, а проще всего набирать саму команду со знаком вопроса в интерпретаторе, например:

Код: set /?
Автор: us0r
Дата сообщения: 06.06.2010 12:53
ComradG
Всегда можно сделать пердупреждение зелёным цветом...
А то тяжело мыслить неимея предмета медитации пред очами...
Автор: ComradG
Дата сообщения: 06.06.2010 13:09
:applose:
us0r
Дядь, ты чего курил?
Автор: wolf0425
Дата сообщения: 06.06.2010 13:15

Цитата:
отличий там немного и все они описаны во встроенной справке, а проще всего набирать саму команду со знаком вопроса в интерпретаторе, например:
set /?
и что - set /? в XP и на сервере выдаст различную справку? на самом деле???
а можно конкретный пример команды set, которая в XP и на сервере выполнится по-разному?


Цитата:
Оттуда же и можно узнать почему я описывал каждый месяц через set, а не через for.
вот читал я как-то set/? и в нем НЕ было написано, почему надо писать в 12 строчек через set а не в одну строчку через for



Цитата:
Я НЕ ХОЧУ ВЫКЛАДЫВАТЬ СКРИПТ, КОТОРЫЙ КОСЯЧИТ И НЕ РАБОТАЕТ В СООТВЕТСВИИ СО ВСЕМИ НЕОБХОДИМЫМИ ТРЕБОВАНИЯМИ
так как и требования и скрипт составляешь ты же - то неспособность выложить работающий скрипт, выполняющий в соответствии с твоим же описанием что-то кроме лексем батника - это только твоя проблема


Цитата:
СВОИ НАРАБОТКИ ОТ ВАС Я УКРЫВАТЬ НЕ НАМЕРЕН, просто дайте время отшлифовать батник.
пока ты демонстрируешь полное отсутсвие наработок и дикий избыток громких слов


Цитата:
В ближайшее время попытаюсь восполнить сей недостаток и напишу подробно, как можно использовать лексемы васика в батниках.
нам не нужно описание. Нам нужен работающий пример.Хоть как-то работающий.
Список узких (или не узких) условий когда лексемы васика хоть как-то работают непосредственно в батнике можешь делать очень длинным, но лучше их выполнение просто включить в код

а все начинаалось с этого:
Цитата:
Да, верно! несколько не по сабжу. Но приглядитесь внимательней к третьей строчке. Все мы прекрасно знаем, что в качестве переменной можно создавать не только фиксированное значение, скажем, путь или файл, но и некоторое действие.
так вот - к третьей строчке пригляделись и увидели что там переменной задается обычное строковое значение, а вовсе не действие.
Автор: mugil_cephalus
Дата сообщения: 06.06.2010 13:17
ComradG

Цитата:
как и ухмылок вроде

ухмылка не синонимична шутке
во-вторых, есть почта
и в-третьих, если в письме будет предупреждение о глючности, никто претенциозно не отнесется к коду
а то заинтриговал, аж любопытство "язву прободило"... и ждите "ад калэндас грэкас"
как напишешь, так глюк ауф!
Автор: us0r
Дата сообщения: 06.06.2010 13:40
ComradG
Тоже хочешь?
Автор: king_stiven
Дата сообщения: 06.06.2010 13:58
mugil_cephalus
Помню как кто писал. что поскольку в taskkill и tasklist одинаковые операторы, то и глюки одной команды должны повторяться в другой.
Автор: wolf0425
Дата сообщения: 06.06.2010 14:21

Цитата:
то и глюки одной команды должны повторяться в другой.
и как- глюки то нашли?
Автор: mugil_cephalus
Дата сообщения: 06.06.2010 14:35
king_stiven

Цитата:
как напишешь, так глюк ауф!

это немецкий
http://ru.wikipedia.org/wiki/Gl%C3%BCck_auf
Автор: king_stiven
Дата сообщения: 06.06.2010 14:46

Цитата:
и как- глюки то нашли?

Вроде да. Только в одной команде.
Автор: mugil_cephalus
Дата сообщения: 06.06.2010 14:55
king_stiven

Цитата:
должны

я писал возможны
wolf0425
king_stiven
tasklist юзаю eng
taskkill не тестил

Добавлено:
wolf0425

Цитата:
и как- глюки то нашли?

http://forum.ru-board.com/topic.cgi?forum=62&topic=19668&start=360#7
Автор: BagaBaga
Дата сообщения: 06.06.2010 18:59
Еще вопрос (про метаинформацию, на этот раз PDF):
возможно ли (некими утилитами) из командной строки менять свойства/метаинформацию PDF-документа (автор, организация и т.д.), для определенности, версия формата - 1.4 или 1.5.
Автор: igor_andreev
Дата сообщения: 06.06.2010 23:22
BagaBaga
http://www.sno.phy.queensu.ca/~phil/exiftool/
Среди поддерживаемых форматов числится PDF(read\write). Я сам правда с PDF не проверял эту утилиту, попробуй сам...
Автор: barsikline
Дата сообщения: 07.06.2010 09:20
king_stiven

Цитата:
barsikline

Цитата:
Необходимо чтобы с ftp качались все файлы или целиком папка дата которых больше по сравнению с другими.

Шапка

Цитата:
Работа с текстом, датой, и файлами »


Спасибо. Немного не то. Там примеры относительно какой-то даты, то есть заранее известно, что новые файлы будут к примеру, через 14 дней . А если обновления выкладываются в разное время - может через месяц, может через неделю, как быть?. Help плиззз....
Насчет пробелов с русскими словами никто не знает что делать?
Автор: king_stiven
Дата сообщения: 07.06.2010 10:10
barsikline
Там должна быть строка типа
if %errorlevel% gtr 14 echo "%fgh%" created more than 14 days ago

если надо 30 дней то
if %errorlevel% gtr 30 echo "%fgh%" created more than 14 days ago

вместо echo "%fgh%" created more than 14 days ago пиши свою команду

также набери в комстроке
if /?


Добавлено:

Цитата:
Насчет пробелов с русскими словами никто не знает что делать?

Пиши батник в кодировке WINDOWS 1251 ANSI и вначале батника ставь
chcp 1251
двойными кавычками все пути экранируй.
А вообще надо %errorlevel% каждой папки загонять в переменнуюи сравнивать их

Цитата:
дата которых больше по сравнению с другими

это типа самая свежая папка нужна? вопрос тоже надо уметь задавть подробно, чётко, ясно и точно.

Цитата:
Необходимо чтобы с ftp качались все файлы или целиком папка дата которых больше по сравнению с другими.

плохая постановка задачи.
Автор: AlienPulsar
Дата сообщения: 07.06.2010 11:17
Здравствуйте, а можно ли через батник создать ссылку - "Сетевое размещение" - нужно добавить фтп\веб ссылку, наравне с сетевыми дисками, диском С, cd-rom'ом в Моем Компьютере!
Автор: LunQ
Дата сообщения: 07.06.2010 12:20
Спецы, помогите с проблемой плиз.
Есть батник - ищет уникальную папку в корне раздела и присваивает переменной MYDISK букву диска (необходимо копировать фалы с переносного картридера - буква диска не постоянная, батник хранится на компах, так как копировать необходимо в разные места):

if exist c:\MYFOLDER set MYDISK=c:
if exist d:\MYFOLDER set MYDISK=d:
if exist e:\MYFOLDER set MYDISK=e:
if exist f:\MYFOLDER set MYDISK=f:
if exist g:\MYFOLDER set MYDISK=g:
if exist h:\MYFOLDER set MYDISK=h:
if exist j:\MYFOLDER set MYDISK=j:
if exist k:\MYFOLDER set MYDISK=k: и т.д.

Беда в том, что как только доходит до буквы картридера без карты памяти, процесс останавливается и появляется ошибка винды:

Windows - Диск отсутствует
Exception Processing Message c0000013 Parametrs 75b3bf7c 4 75b3bf7c 75b3bf7c

Можно это как-то обойти?
Автор: king_stiven
Дата сообщения: 07.06.2010 12:32
LunQ
пример для !комстроки!
for %i in (q w e r t y u i c d ) do if exist %i:\MYFOLDER set MYDISK=%i:

Если не получается, то в каком виде ошибка выходит, отдельным окошком как ERROR?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

Предыдущая тема: XP не видит второй раздел на съемном USB-HDD


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