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

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

Автор: kalkin5
Дата сообщения: 14.09.2009 10:17
01MDM
спасибо а символ $ после 0419 для чего нужен?
Автор: 01MDM
Дата сообщения: 14.09.2009 11:28
kalkin5

Цитата:
а символ $ после 0419 для чего нужен?

Конец строки, чтоб исключить варианты:

"0419 qwerty"
"qwerty 0419"

и т.д
Автор: mnh
Дата сообщения: 14.09.2009 13:17
Скажите пожалуйста, почему не отрабатывает команда:

for /r c:\de %%i IN (de.ini) do (
set j=%%~dpfi
set j=%j:~11,2%)


цикл не хочет воспринимать команду set j=%j:~11,2% (
пробовал и так set j=%%%~dpfi:~11,2%
Автор: bomzzz
Дата сообщения: 14.09.2009 13:23
у тебю множество файл - а тут вроде речь идет только про каталоги.
Автор: mnh
Дата сообщения: 14.09.2009 13:35
Суть такова - есть файл, который нужно найти и вставить еще одну строку, всё это можно сделать таким способом, но я хочу упростить и сделать одним бат файлом

1.bat

for /r c:\de %%i IN (de.ini) do 2.bat %%i

2.bat

set j=%1
set j=%j:~18,2%
gsar.exe -s[path] -r[path]:x0D:x0ASate=D::\Data\bo\ETPL%j%\ -o %1


где gsar дополнительный ехе файл
Автор: bomzzz
Дата сообщения: 14.09.2009 13:42
оператор (команда) for с параметром /r производит поиск по каталогам , поиск по содержимому файлов производится с параметром /f
Автор: mnh
Дата сообщения: 14.09.2009 14:09
я полностью согласен, потому использовал цикл только для поиска файлов, ехе файлом заменял строку
Автор: bomzzz
Дата сообщения: 14.09.2009 14:31

Цитата:

ECHO OFF
COLOR 9F
CLS
set j=kupilamamakonikaakonikbeznogi
for /r c:\de %%i IN (de.ini) do set j=%%i%
set j=%j:~18,2%
echo %j%
pause


Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
http://files.myopera.com/Creat0R/files/Quick_Batch_File_Compiler_2.xx.zip
у него есть свои преимщества, когда речь идет о распаковке вложенных файлов в темп,
но Bat_To_Exe_Converter гораздо лучше
HomePage
Download
Freeware
тута еще есть такая утилита как аудио видео ту екзе

есть еще такая утилита для конвертации. она древняя и половину команд не понимает. но зато исполняемые модули очень маленькие

Utility Downloads
How to make a bat executable
Download bat2exe.com

да и сама она весит 6,12 КБ (6 272 байт)
Автор: mnh
Дата сообщения: 14.09.2009 16:59
спс за ответ, но у меня всё равно вопрос остался, скажите как бат файлом найти файл и добавить строку, причём в строку нужно прописать часть пути к ниму
например файл лежит в папке E:\Temp\de.txt в de.txt нужно добавить строку (в определённое место например за строкой уууууу)
D:\Data\DE\BASE\bo\etplEMP\ - где EMP взял из пути E:\Temp\de.txt
Автор: bomzzz
Дата сообщения: 14.09.2009 17:10
for /r c:\de %%i IN (de.ini) do set j=%%i%
set j=%j:~18,2%
найти файл в папке включая поиск в подкаталогах и взять часть пути вот так.
чтоб записать строку после некоторой строки файл надо полностью переписать в новый вставив нужную строку в нужное место потом старый стереть а новый переименовать в старое имя.
наконецто понял что требуется - отказаться от екзешника

Добавлено:
вот сколько вожусь с етими батниками все понять не могу принцип где сколько знаков % должно быть.

Цитата:

ECHO OFF
COLOR 9F
CLS

FOR /F %%I IN (MyFile.txt) Do (
ECHO %%I >> MyFile1.txt
IF %%I%==MYSTRING ECHO ADDSTRING>> MyFile1.txt)

DEL /Q MyFile.TXT
REN MyFile1.TXT MyFile.TXT
PAUSE

этот батник добавляет в фале MyFile.txt после КАЖДОЙ строки MYSTRING строку ADDSTRING

Цитата:

111111111 > 111111111
222222222 > 222222222
MYSTRING > MYSTRING
333333333 > ADDSTRING
333333333

тут осталось превратить MYSTRING и ADDSTRING в переменные и присвоить им значения, имя файла с путем к нему
FOR /R c:\de %%I IN (de.ini) DO SET PATH=%%I%
Автор: Smokeer
Дата сообщения: 14.09.2009 18:54

Цитата:
Нужно проверять файлы по размеру или в любом случае отправлять их *.bac?

если есть одноименный файл - переименовать в .bac
Вообще я понял... это делается через FOR + IF EXIST...

почему-то сначала спрашиваешь а потом через день-два самому приходит в голову как делать... странно.
Автор: bomzzz
Дата сообщения: 14.09.2009 18:56
патамуша подсознание думаит само, ну как бы, это ты конечно сам думаешь.

чем эти батники, хитрованы, с куцыми ограниченными возможностями и идиотским синтаксисом, кому все ранво учите бейсик. все эти задачи на нем решаются, и все остальные тоже, язык простой, понятная структура не нужно извращенные алгоритмы выдумывать. а когда его глубоко освоишь - любой другой язык не представляет сложности. и по бейсику много хороших простым языком написанных книг. где читаешь и все понятно. по остальному найти что то внятное очень сложно.
Автор: 01MDM
Дата сообщения: 14.09.2009 19:15
Smokeer
Рад, что разобрался самостоятельно.

Автор: Artem_Butenko
Дата сообщения: 14.09.2009 20:46
Ребята, пожалуйста, помогите реализовать следующие задачи: 1) Перемещение группы файлов по маске каждого в отдельную папку именуемую от 1 и до ... (2, 3, 4, 5, 6, 7, 8, 9, 10 и т.д.). 2) Задача сходна с первой, только файлы необходимо переместить каждый в отдельную папку с именем перемещаемого файла. Буду Вам очень признателен за помощь.
Автор: Kiev78
Дата сообщения: 14.09.2009 22:11
1. Не понятно, что за маска? Каков конкретно порядок перемещения?
2.

Цитата:
FOR /r C:\test_folder\ %%a IN (*.*) DO (
md %%~na
move %%a %%~dpa%%~na\%%~nxa
)
Автор: 01MDM
Дата сообщения: 14.09.2009 23:15
Artem_Butenko
1:

Код:
@echo off
for %%i in (*.txt) do call:move "%%i"
goto:eof

:move
set /a folder+=1
md folder
move %1 folder
Автор: Artem_Butenko
Дата сообщения: 15.09.2009 00:17
Спасибо Вам ребята (01MDM, Kiev78) за помощь. Буду разбираться дальше. Под маской имелось ввиду расширение файла. Куда перемещать файлы? В корневой каталог, в котором они и находятся, но каждый в отдельную папку, в первом случае имена папок должны нумероваться, а во втором, - получать имя перемещаемого файла. Теперь думаю с вопросом исправился, прошу меня извинить.
Автор: bomzzz
Дата сообщения: 15.09.2009 06:03
новую утилиту родил - суперкомпакт. проверяет наличие в буфере обмена текстовой информации, и копирует её в файл рядом с собой с именем Clbd.txt. проверил 100 мб она точно копирует причем быстро - наверно даже быстрее батника. предел скорее всего определяется железом компьютера. если текстовой информации в буфере не содержится создается пустой файл - думаю это корректно для взаимодействия разных исполняемых модулей.
ClipBoard.exe 2,00 КБ (2 048 байт)
можно было бы конечно сделать, чтоб ей командной строкой имя файла заказывалось, но думаю это излишние навороты.
прежней такой же которая 10 кб весит, пользовался в батниках ни раз - в основном для передачи ссылок или ссылки http. это реально полезная вещь.

так как она вызывается из батника командой call то управление возвращается в батник когда файлик уже создан и закрыт. то есть все ништяк работает. проверено. ну там чтобы передавать на закачку списки ссылок и такое прочее... обратная утилита "В буфер обмена" ни разу реально не пригодилась. также в СДопен смысл есть - тут же ткнул и за диском потянулся, а в СДклоуз нету - диск засунул и тут же ткнул в кнопку.

Цитата:

ClipBoard.exe 2,00 КБ (2 048 байт)
MsgBox.exe2,00 КБ (2 048 байт)
MsgBox-.exe2,00 КБ (2 048 байт)
sound.exe1,50 КБ (1 536 байт)
cdclose.exe 2,50 КБ (2 560 байт)
cdopen.exe 2,50 КБ (2 560 байт)

вот еще две утилиты есть Reboot и ShutDown - они без интерфейса, то есть ничего не спрашивают. но таких наверно хватает.
Reboot.exe 10,2 КБ (10 454 байт)
ShutDown.exe 10,2 КБ (10 454 байт)

похоже разделителем значений надо было сделать " .


новую слепил разделитель команд " а разделитель строки ` (буква ё в английской раскладке), оба эти знака можно легко заменить на почти такие же, кавычек аж три набора, и апострофов тоже.
MsgBox-.exe2,00 КБ (2 048 байт)

надеюсь больше сурпризов не будет.
текст в окошко передан батником

Цитата:

ECHO OFF
COLOR 9F
CLS
FOR /F "delims=µ" %%I IN (MSG.TXT) DO SET MSG=%%I
call MsgBoxU.exe %MSG%
pause

текст примерно такой: "sample'sample"sample"32
общая длина строки 1024 символа - 1 кб
Автор: mnh
Дата сообщения: 15.09.2009 12:34

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


Спасибо огромное за внимание!
Автор: Angel3Ds
Дата сообщения: 15.09.2009 14:49
Подскажите плз, как из командной строки, изменить аудиоустройство, используемое по умолчанию. Нашел только это, rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2 , а как дальше, выбрать устройство и нажать ок, не знаю =))

WinXP
Автор: bomzzz
Дата сообщения: 15.09.2009 15:44
надо снимок с системы сделать изменить устрноство и сделать снова снимок и найти разницу - скорее всего это в реестре. или набрать в гугле что то типа реестр аудиоустройство. если не повезет по английски
HKEY_CURRENT_USER\Software\Microsoft\Multimedia\Sound Mapper
проверять надо
у мнуу он вот так выглядит. очень похоже на правду.

Цитата:

REGEDIT4

[HKEY_CURRENT_USER\Software\Microsoft\Multimedia\Sound Mapper]
"Playback"="SB Live! Audio [DF80]"
"PreferredOnly"=dword:00000000
"SetupPreferredAudioDevicesCount"=dword:00000000
"Record"="SB Live! Audio [DF80]"


если это ВСЁ что тебе надо - файлик реестра создай да и все.
вот интересно тут пять настроек а значений у меня всего четыре - кажется я нашел почему у меня после восстановления системы из образа через некоторое время midi пердеть , извините, начинает. все засечь не могу из за какой проги или чего то еще.

ну вот я поменял на модемный вход в настройках винды и реестр стал. ОНО!

Цитата:

REGEDIT4

[HKEY_CURRENT_USER\Software\Microsoft\Multimedia\Sound Mapper]
"Playback"="Модем №0, линейный выход"
"PreferredOnly"=dword:00000000
"SetupPreferredAudioDevicesCount"=dword:00000000
"Record"="SB Live! Audio [DF80]"

УРА! починилось миди
Автор: Qarma
Дата сообщения: 15.09.2009 17:17
Здравствуйте, не поможете решить небольшую задачу:
Необходимо удалить файлы, не после следующего алгоритма:
for /R %%i in (*.ogg) do dec.exe "%%i", а в процессе его выполнения. Объясню подробнее - после преобразования файла *.ogg - нужно удалить конкретный файл (*.ogg), который уже конвертировался в *.wav.
Автор: Angel3Ds
Дата сообщения: 15.09.2009 17:27
bomzzz Спасибо, то что нужно =) Тогда из камандной строки, у меня это так:
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Multimedia\Sound Mapper" /v "Playback" /t "REG_SZ" /d "SoundMAX HD Audio" /f

Автор: bomzzz
Дата сообщения: 15.09.2009 17:44
и тебе спасибо - я еще реестр не редактировал из батника. только на вбс скрипе делал. может все таки проще фаликом реестра ето делать?

может в этой теме мне помогут. думаю не только мне знакомо - насколько обломно лазить в свойства папки, да еще два раза, чтоб изменить расширение у какого либо файла. я чаще пользовался для этого тотал командером, как "вторым експлорером", но тоже его запускать и открывать нужную папку не быстро. сделал на вбс скрипте изменялку для реестра, ну на чем cделано не принчипиально. вот после изменений нужно експлорер ОБНОВИТЬ. из вбс скрипта его удалось только перегрузить полностью - но при етом исчезает весь рабочий стол, и происходит это в течение нескольких секунд, к тому же многие программы такое событие переживают не корректно и в системном трее могут не появится после обновления. обновить F5 оказалось вовсе не тоже самое обновить, когда тыкаешь в поле папки или рабочий стол и в контекстном меню выбираешь обновить. причем даже если это делать через контекстное меню обновляется только одна папка, а не все. а когда разрешаешь расширения для файлов обновляются все окна експлорера. перерыл пол инета не смог найти ни следа, ни про эту разницу, ничего толкового про експлорер. никто не знает как обновить это дело автоматичtски. пока более или менее толковое батник которые отрезает расширения у всех файлов в одной с собой директории. но иногда надо расширение не удалить а посматреть. вот как бы обновить експлорер в этом случае.

Цитата:

ECHO OFF : отключаем вывод служебной инфы
COLOR 9F : делаем екранчик синим, а бухавки белыми из соображений красоты
CLS : очищаем екранчик
SET MYNAME=%0 : присваеваем переменной MYNAME имя нашего батника
ECHO > %MYNAME:~0,-4% : создаем рядом с нашим батником файл с таким же именем но без расширения .bat
REN *.* *."" : удаляем у всех файлов в директории расширения переименованием
: наш батник не может переименовать себя потому что тут же уже сучествует файл
DEL %MYNAME:~0,-4% : с его именем без расширения. удаляем файл-заглушку. хатова.
Автор: Cokolok
Дата сообщения: 15.09.2009 18:26
Люди... у миня на уроке информатики Учитель задолбал умничать на дурацкие темы !!!
Помогите плиз.... скажите пару приёмчиков чтобы поприкалываться с его компа... (написать маленькую прогу, вести в Командной Строке Что либо..... запоминающее)
чтото такое неубийственное... чтобы поарать.... а если пропасут что я както исправить =)))
Автор: Kiev78
Дата сообщения: 15.09.2009 18:29

Цитата:
Здравствуйте, не поможете решить небольшую задачу:
Необходимо удалить файлы, не после следующего алгоритма:
for /R %%i in (*.ogg) do dec.exe "%%i", а в процессе его выполнения. Объясню подробнее - после преобразования файла *.ogg - нужно удалить конкретный файл (*.ogg), который уже конвертировался в *.wav.

Тогда просто:

Код: for /R %%i in (*.ogg) do (
dec.exe "%%i"
del "%%i"
)
Автор: bomzzz
Дата сообщения: 16.09.2009 04:39
вчера меседжбокс испытал, сегодня буфер обмена испытывал. 170 мб в буфер обмена просто не скопировалось. видимо потолок 100 мб или 102.4 скорее всего. это не так просто определить - файл 170 мб открывался несколько минут. до 100 мб копируется легко и текстовые файлы такого размера открываются сравнительно быстро. создал файл 81.5 мб, открыл его скопировал содержимое. запустил свою утилиту - и сравнил хеш сумму ASH используя µTorrent - она полностью совпала.
Автор: raystlin
Дата сообщения: 17.09.2009 03:47
Ребята спасайте....

уже 5 часов утра - 4-е сутки бьюсь.

суть:

в папке есть файлы различного размера,

например:

C:\Catalog\bigfile.wav
C:\Cataog\smallfile.mp3

как написать bat-ник, который будет делать это:

- создаст в указанном месте текстовый файл с полными путями и именами из этой папки
- в текстовом файле имена должны быть отсортированы по _размеру_, т.е. сначала большой, потом поменьше и т.д. Хотя, хватит если первым будет самый большой.
- можно было бы вызывать как процедуру, т.е. call getdir.bat D:\my music\

пока кроме как dir /o-s /b > dirlist.txt меня больше ни на что не хватило. =((((

Спасибо заранее...
Автор: bomzzz
Дата сообщения: 17.09.2009 04:25
что ж так скромно.
я еще бы так попробовал поколдавать
FOR /F "DELIMS=* SKIP=7" %%I IN ('DIR') DO ECHO %%I>>MYLIST.TXT
поймать бы того барана который справку к винде написал
DIR /a:-d /o:-s > MyDir.txt вот и все
FOR /F "DELIMS=* SKIP=5" %%I IN ('DIR /a:-d /o:-s') DO ECHO %%I>>MYLIST.TXT вот так покруче
тебе же с путем надо не могу понять как с путей сделать
FOR /F "DELIMS=* SKIP=5" %%I IN ('DIR /a:-d /o:-s') DO ECHO %%~fI>>MYLIST.TXT
FOR /F "eol= DELIMS=* SKIP=5" %%I IN ('DIR /a:-d /o:-s') DO ECHO %%I>>MYLIST.TXT так сильнее
FOR /F "eol= tokens=3,4 SKIP=5" %%I IN ('DIR /a:-d /o:-s') DO ECHO %%I %%J>>MYLIST.TXT
FOR /F "eol= tokens=3,4 SKIP=5" %%I IN ('DIR /a:-d /o:-s') DO ECHO %%I %%~fJ>>MYLIST.TXT
пришлось пожертвовать нижними двумя строчками. ну их можно отрезать при желании. не вижу простого решения. можно переписать два раза файл выкинув по нижней строчке
вот зараза - чеж он так не хочет нижние строчки выкидывать
тебе же еще надо чтоб в батник путь параметром передавался - вот так тогда
CD /D %~DP1
FOR /F "eol= tokens=3,4 SKIP=5" %%I IN ('DIR %1 /a:-d /o:-s') DO ECHO %%I %%~fJ>>C:\MYPATH\MYLIST.TXT
ну раз он нижние не выкидывает строчки то так
CD /D %~DP1
FOR /F "tokens=3,4 SKIP=5" %%I IN ('DIR %1 /a:-d /o:-s') DO ECHO %%I %%~fJ>>C:\MYPATH\MYLIST.TXT
вот так выкинул но тут думать надо может файлы есть с названием байт

Цитата:

ECHO OFF
COLOR 9F
CLS
CD /D %~DP1
FOR /F "tokens=3,4 SKIP=5" %%I IN ('DIR %1 /a:-d /o:-s') DO (
IF %%J NEQ Ў ©в ECHO %%I %%~fJ>>c:\MyPath\MyList.txt)

кстати из за кодировки этот текст отсюда не скопировать. надо сделать список с двумя нижними строчками и скопировать из этого списка эти четыре символа Ў ©в (слово байт в досовской кодировке) и вставить в батник. если прямо с формуа скопировать не будет работать.

Dos-Win Converter Alone Wolf
D-W.Conv.zip
вот у меня еще в бейсике такая штука валялась
CYRILL.EXE
@echo off
cyrill
list.bat
если таким батником запустить сначала файл а потом батник, то список получится в нормальной кодировке но имена будут не виндовские а досовские. еще читал как винду патчат, сам не делал.

кстати если тебе сами размеры не нужны тогда вот так
CD /D %~DP1
FOR /F "tokens=4 SKIP=5" %%I IN ('DIR %1 /a:-d /o:-s') DO (
IF %%I NEQ Ў ©в ECHO %%~fI >>c:\MyPath\MyList.txt)
Автор: 01MDM
Дата сообщения: 17.09.2009 07:55
raystlin

Код:
@echo off
setlocal
pushd C:\Catalog
for /f "tokens=*" %%i in ('dir /b /a-d /o:s') do call:set "%%i"
popd

for /f "tokens=2 delims==" %%i in ('set file_ ^| sort /r') do echo %%i 1>>1.txt
goto:eof

:set
set "size=000000000000000%~z1"
set "size=%size:~-16%"
set "file_%size%_%~s1=%~f1"

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: SAS.Планета (часть 2)


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