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

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

Автор: utka00
Дата сообщения: 23.09.2007 15:55
Smitis
если он нулевой длины то куда гиг пропадает тогда?
Автор: 01MDM
Дата сообщения: 23.09.2007 17:37
Smitis
А можно перенаправить в поток файла содержимое другого файла, не текстового, и как потом открыть?
Допустим есть 1.mp3, который надо прицепить к 1.txt:music
Пробовал по-разному, но..
Автор: Elroir
Дата сообщения: 23.09.2007 18:50
Отвечу за Smitis

01MDM

Цитата:
А можно перенаправить в поток файла содержимое другого файла, не текстового, и как потом открыть?
Допустим есть 1.mp3, который надо прицепить к 1.txt:music

Делаем так:

Код:
type 1.mp3 > 1.txt:music.mp3
Автор: 01MDM
Дата сообщения: 23.09.2007 23:22
Elroir
Спасибо, работает, правда не во всех приложениях. Spider Player отказался воспроизводить, хотя информация из тегов была видна.
Очень интересная фишка.
Автор: skeljuve
Дата сообщения: 24.09.2007 10:59
Объясните, что может выполнять эта часть кода.

Пытался почитать в мануалах, но так ничего и не понял. Понял только в общих чертах и то- частично :
- первая строка проверяет правильность параметра, и все ошибки то напрявляет их в "дыру"
- вторая строка вообще меня приводит в непонятку.
- третья : идёт проверка, если установилось не "enabledelayedexpansion", то писать ошибку в %dvderr%.

Код:
VERIFY parametr 2>nul
setlocal enabledelayedexpansion
IF ERRORLEVEL 1 (echo %date:~-10% cannot turn on delayedexpansion, run "cmd /v:on" first>>%dvderr% ) & goto :eof
Автор: vista2006
Дата сообщения: 24.09.2007 13:37
А как решить такую задачу? Есть файл с текстом:

анонизм - это плохо!
беспробудное пьянство - это плохо!
преступления на сексуальной почве - это плохо!

Нужно вынуть из него словосочетания:

анонизм
беспробудное пьянство
преступления на сексуальной почве

P.S. Понятно, что это делается через FOR, но как именно? Например
for /f "tokens=1-4 eol= " %i in (file.txt) do @echo %i
выводит не нужные слова "'это плохо!"
Пробовал так:
for /f "tokens=1-4 eol=-" %i in (file.txt) do @echo %i
но тогда выводятся ненужные пробелы после слов.

Автор: KapralBel
Дата сообщения: 24.09.2007 13:50
vista2006
Поставь левый разделитель что бы строка полность считывалась в переменную и откусывай от неё кусок СЕТом за исключением последних N-символов
Автор: Smitis
Дата сообщения: 24.09.2007 14:39
skeljuve

Цитата:
Объясните, что может выполнять эта часть кода.

Первая команда устанавливает errorlevel в 1.
Вторая включает режим enabledelayedexpansion (отложенное расширение переменных среды, читай "мануалы"!). Если выполнилась удачно, errorlevel будет устновлен в 0. В 2000, кажется, была ошибка в установке этой командой errorlevel. Поэтому нужна первая команда. Если вторая команда не выполниться (расширения запрещены), errorlevel останется в 1.
Третья команда проверит правильность включения enabledelayedexpansion и выдаст сообщение.
И вообще, блин, если ввести setlocal /? будет выдано всё более подробно, чем я тут распинаюсь.
Автор: Maza Faka
Дата сообщения: 24.09.2007 14:42
vista2006
Так?

Код:
@echo off
chcp 1251> nul
for /f "tokens=1* delims=-" %%a in (test.txt) do call :sub "%%a"
goto :eof

:sub
set var=%~1
set var=%var:~0,-1%
echo %var%>> out.txt
Автор: vista2006
Дата сообщения: 24.09.2007 16:49
vista2006
Так?

Код:
@echo off
chcp 1251> nul
for /f "tokens=1* delims=-" %%a in (test.txt) do call :sub "%%a"
goto :eof

:sub
set var=%~1
set var=%var:~0,-1%
echo %var%>> out.txt


Нет, так всё равно файл целиком выводит.. Есть ещё варианты?

Добавлено:

Цитата:
vista2006
Поставь левый разделитель что бы строка полность считывалась в переменную и откусывай от неё кусок СЕТом за исключением последних N-символов


А можно код? Сам я ни в жизнь ни напишу!
Автор: Maza Faka
Дата сообщения: 24.09.2007 17:26
vista2006
Я проверял, у меня выводит строки до тире, может
Цитата:
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
Автор: vista2006
Дата сообщения: 24.09.2007 17:58

Цитата:
vista2006
Я проверял, у меня выводит строки до тире


Да, всё получилось!! Огромное человеческое спасибо
Только тэг ,-1% оказался лишний. Он последний символ каждого слова съедал.
Если его убираешь, то всё работает ОК
Автор: vista2006
Дата сообщения: 25.09.2007 10:46
Задача:
Надо вытащить разрешения Security на все share-ресурсы с удалённого сервера.
Я делаю так:
Сначала вывожу список шаров в файл
for /f "usebackq tokens=* skip=7" %%i in (`net view \\Имя_сервера`) do @echo %%i>>1.txt
Получается файл с текстом:

Название шары_c_одним пробелом disk
Название шары с несколькими пробелами disk
Название_шары_без_пробелов disk
The command completed successfully.

Далее пытаюсь из этого файла вынуть название Шаров без мусора, чтобы потом засунуть в команду Subinacl для снятия разрешений, но ничего не получается
for /f "tokens=*" %%i in (1.txt) do call :begin "%%i"
goto exit
:begin
set var=%~1
set var=%var:~0,-1%
echo %var%
:exit

Подскажите пожалуйста что не так.
P.S. А может быть есть более простое решение моей задачи? Например, чтоба net view сразу без мусора шары вынимал...

Автор: Maza Faka
Дата сообщения: 25.09.2007 13:18
vista2006
У меня русская Винда, соответственно код выглядит так:

Код:
@echo off
for /f "skip=7" %%a in (
'net view \\ws6 ^| find /i /v "команда"') do echo %%a>> 1.txt
Автор: vista2006
Дата сообщения: 25.09.2007 15:16

Цитата:
@echo off
for /f "skip=7 delims=" %%a in (


Цитата:
'net view \\ws6 ^| find /i /v "команда"')


А что вставлять вместо "Команда" ?
Автор: Maza Faka
Дата сообщения: 25.09.2007 15:29
vista2006
Вставь "The"
Автор: vista2006
Дата сообщения: 25.09.2007 15:55
Не хочет выполняться -чего то не хватает...
Пробелы убрал
Автор: vv07
Дата сообщения: 27.09.2007 02:28
Уважаемые пользователи!Если вопрос не к месту,заранее прошу извинить.У меня следующая проблема.Система перестала(по каким причинам не знаю)распознавать расширение .bat.Батники перестали запускаться.Подскажите в чем может быть проблема и как это исправить.Перставлять винду в настоящее время нет возможности.Заранее благодарен.
Автор: Elroir
Дата сообщения: 27.09.2007 02:36
vv07
Проблема может быть в реестре. Исправить можно создав .reg файл следующего содержания:

Код:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.bat]
@="batfile"

[HKEY_CLASSES_ROOT\.bat\PersistentHandler]
@="{5e941d80-bf96-11cd-b579-08002b30bfeb}"

[HKEY_CLASSES_ROOT\batfile]
@="MS-DOS Batch File"
"EditFlags"=hex:30,04,00,00

[HKEY_CLASSES_ROOT\batfile\DefaultIcon]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,68,00,\
65,00,6c,00,6c,00,33,00,32,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,31,00,35,\
00,33,00,00,00

[HKEY_CLASSES_ROOT\batfile\shell]

[HKEY_CLASSES_ROOT\batfile\shell\edit]

[HKEY_CLASSES_ROOT\batfile\shell\edit\command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,4e,00,4f,00,\
54,00,45,00,50,00,41,00,44,00,2e,00,45,00,58,00,45,00,20,00,25,00,31,00,00,\
00

[HKEY_CLASSES_ROOT\batfile\shell\open]
"EditFlags"=hex:00,00,00,00

[HKEY_CLASSES_ROOT\batfile\shell\open\command]
@="\"%1\" %*"

[HKEY_CLASSES_ROOT\batfile\shell\print]

[HKEY_CLASSES_ROOT\batfile\shell\print\command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,4e,00,4f,00,\
54,00,45,00,50,00,41,00,44,00,2e,00,45,00,58,00,45,00,20,00,2f,00,70,00,20,\
00,25,00,31,00,00,00

[HKEY_CLASSES_ROOT\batfile\shellex]

[HKEY_CLASSES_ROOT\batfile\shellex\DropHandler]
@="{86C86720-42A0-1069-A2E8-08002B30309D}"

[HKEY_CLASSES_ROOT\batfile\shellex\PropertySheetHandlers]

[HKEY_CLASSES_ROOT\batfile\shellex\PropertySheetHandlers\PifProps]
@="{86F19A00-42A0-1069-A2E9-08002B30309D}"

[HKEY_CLASSES_ROOT\batfile\shellex\PropertySheetHandlers\ShimLayer Property Page]
@="{513D916F-2A8E-4F51-AEAB-0CBC76FB1AF8}"

Автор: vv07
Дата сообщения: 27.09.2007 04:06
Elroir
Спасибо Уважаемый!Не помогло.Может еще кто,что подскажет.
Автор: Elroir
Дата сообщения: 27.09.2007 04:13
vv07
Как вы (ты?) запускаете батники? Из эксплорера? Если да, попробуйте запустить их из командной строки (Start->Run->cmd.exe)
Автор: vv07
Дата сообщения: 27.09.2007 04:20
Elroir
В Тотале запускаю сеанс дос.Я вообще практически все делаю через командер.
Автор: KapralBel
Дата сообщения: 27.09.2007 07:01
vv07
Что в переменной окружения PATHEXT
Автор: Elroir
Дата сообщения: 27.09.2007 07:06
vv07
Какая ошибка выводится в ответ на попытку запустить батник?
Автор: vv07
Дата сообщения: 27.09.2007 07:16
Обычная ошибка.В Тотале приложение не может быть открыто.В Винде пишет неизвестное приложение,поиск в инете или вручную.Обидно еще вот что.До внесения изменения в реестр,я батник хоть через дос запускал.А сейчас и в командной не запускаеться
Выручайте друзья.Мне винду никак переставлять щас нельзя.
Автор: Elroir
Дата сообщения: 27.09.2007 07:33
vv07

Цитата:
До внесения изменения в реестр,я батник хоть через дос запускал.А сейчас и в командной не запускаеться

Используй откат системы для восстановления статусa-кво.

Что значит "через дос"? Когда я спрашивал, как запускаются батники - ответ был "В Тотале запускаю сеанс дос". Чем отличается первый от второго?


Добавлено:
А .cmd файлы тоже не запускаются?
Автор: vv07
Дата сообщения: 27.09.2007 08:31
Elroir
Извините за некорректность.Я и имел в виду в тотале,через сеанс дос,как обычно делал.Да cmd тоже не запускаються.Пишет невозможно запустить.Откат сделал,в тотале по прежнему могу,но проблема в следующем.Есть же SFX в которых задан запуск батника,вот их и приходиться вручную распаковывать и запускать из тотала.Да и вообще,не должно же быть так.У меня ХР лицензия SP2.Вроде ничего такого не шаманил,что могло бы вызвать такой глюк.Буквально два дня назад все было ОК.Вчера скачал SFX а он не запускает батник,вот и пришел к вам за помощью.Сам разобраться не могу.
Автор: KapralBel
Дата сообщения: 27.09.2007 08:52
vv07
Повторюсь
Что в переменной окружения PATHEXT

И еще
1. А часом у тебя вирусы не водятся?
2. Т.е. любой батник (.bat/.cmd) при запуске ругается?
Автор: vv07
Дата сообщения: 27.09.2007 09:13
KapralBel
Вам что именно написать по TEMP или TMP ?По вирусам чист як дитя малое.
Да абсолютно любой.Уже сам создал cmd.Пробовал запустить,полный ноль.Главное сохраняю именно как расширение юсьв
Сохраняеться,но при запуске снова выдает ошибку неизвестного приложения.
Автор: KapralBel
Дата сообщения: 27.09.2007 09:21
vv07
Что в переменной окружения PATHEXT
А не TMP или Temp


Добавлено:
Еще надо результаты команд

assoc .cmd
assoc .bat
ftype batfile
ftype cmdfile

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879

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


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