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

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

Автор: pom205
Дата сообщения: 09.06.2007 10:07
Нужен специалист! Кто набил руку, пожалуйста на секунду зайдите на этот топик Ссылка
и сделайте обнулятор с опциональным запрашиваемым переменным ключом реестра а то что-же ребята мучаются. Там делов Вам - на минуту.
Там уже всё расписано в шапке на полтопика, надо только автоматизировать.
Автор: JohnRD
Дата сообщения: 09.06.2007 12:21
Elroir

@echo off
setlocal
for /f "tokens=*" %%a in ('dir /b /a-d /od /tc') do set "old_last=%%a"
::Running the program that creates new file
::====================================
echo 1>new_file2.txt
::====================================
for /f "tokens=*" %%a in ('dir /b /a-d /od /tc') do set "new_last=%%a"
if "%old_last%"=="%new_last%" (
set "new_last="
echo New file not found
) else (echo %new_last%)

почему то не находит новых файлов
и где можно вписать путь который надо проверять, если запускать не из той папки
запускать cmd из с:\1\1.cmd , а проверять папку d:\2\
сейчас я запускал прямо из той папки..
спасибо
Автор: wolf0425
Дата сообщения: 09.06.2007 12:41
JohnRD

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

в хвост команд dir
Цитата:
почему то не находит новых файлов
файлы точно создаются новые (/tc), а не переписываются поверх (модифицируются) старые?

Автор: JohnRD
Дата сообщения: 09.06.2007 13:24
wolf0425
прога настроена так что
ей создаются новые файлы
Capture-001.avi
Capture-002.avi
Capture-003.avi
....
с новыми датами
мне надо последний созданный

вот когда добавил путь после dir
начал находить

вот что пишет
C:\smtp>2.cmd
File Not Found что это за файл он не находит?
Capture-019.avi

а так все ок


Автор: Maza Faka
Дата сообщения: 09.06.2007 13:40
pom205
Попробуй так:

Код:
@echo off

:begin
set /p "var=Enter generated key "
if not defined var echo ERROR & goto :begin
reg add "HKCU\Software\aignes\wswatch" /t REG_SZ /v Flags /d "" /f
reg add "HKU\S-1-5-21-1482476501-329068152-682003330-1003\Software\aignes\wswatch" /t REG_SZ /v Flags /d "" /f
reg add "HKCR\CLSID\{%var%}" /t REG_SZ /ve /f
reg add "HKLM\SOFTWARE\Classes\CLSID\{%var%}" /t REG_SZ /ve /f

del /q /f "C:\Program Files\WebSite-Watcher\wswatch.cfg"

start "" "C:\Program Files\WebSite-Watcher\program.exe"
Автор: Elroir
Дата сообщения: 09.06.2007 14:07
JohnRD

Цитата:
File Not Found что это за файл он не находит?

Это dir выводит. В каждом for-e, в конце команды dir, после указания директории, добавь 2^>nul. То есть полная команда должна выглядить так:
'dir /b /a-d /od /tc d:\2\ 2^>nul'

Добавлено:
mitrichbel

Цитата:
в консоли бегут строчки с "trying имя файла без расширения", некоторые из них повторяются, хотя присутствуют в единственном экземпляре (проверил)

Они и должны повторяться - программа проверяет имена. Я просил список последних строчек, чтобы воспроизвести ошибку. Так что список в студию
Автор: wolf0425
Дата сообщения: 09.06.2007 14:11
JohnRD
Цитата:
File Not Found что это за файл он не находит?

ты уверен, что это батник не находит файл, а не запускаемая из него твоя программа?
отключение echo закомментируй пока да посмотри...
Автор: JohnRD
Дата сообщения: 09.06.2007 15:49
Elroir wolf0425

C:\smtp>setlocal
C:\smtp>for /F "tokens=*" %a in ('dir /b /a-d /od /tc e:\video\ 2>nul') do set "
old_last=%a"
C:\smtp>set "old_last=Capture-001.avi"
C:\smtp>set "old_last=Capture-002.avi"
..
C:\smtp>set "old_last=Capture-021.avi"
C:\smtp>echo 1>new_file2.txt
C:\smtp>for /F "tokens=*" %a in ('dir /b /a-d /od /tc e:\video\ 2>nul') do set "
new_last=%a"
C:\smtp>set "new_last=Capture-001.avi"
C:\smtp>set "new_last=Capture-002.avi"
..
C:\smtp>set "new_last=Capture-021.avi"
C:\smtp>if "Capture-021.avi" == "Capture-021.avi" (
set "new_last="
echo New file not found
) else (echo Capture-021.avi )
New file not found
C:\smtp>
Автор: Elroir
Дата сообщения: 09.06.2007 16:09
JohnRD

Код:
@echo off
setlocal
for /f "tokens=*" %%a in ('dir /b /a-d /od /tc e:\video\ 2^>nul') do set "old_last=%%a"
Автор: FAPSUK
Дата сообщения: 09.06.2007 19:44
Друзья, вот еще одна заморочка.

Есть текстовый файл _text_.txt в нем текст с символами < > ё млн.
Необходимо заменить символы
< на "
> на "
ё на е
млн. на млн
двойные пробелы на одинарные и т.д.
А потом сохранить результат в этом же файле.


ЗЫ. Maza Faka и мужики, спасибо большое за батник по раздербанке оперативной сводки! Самое интересное, что в инете подобных программ я не нашел!



Добавлено:
Мужики, может кому понадобится

bat2exec.com [6 KB] http://bonza.narod.ru/FILES/UTILS/bat2exec.com
bat2com.com [6 KB] http://bonza.narod.ru/FILES/UTILS/bat2com.com
Автор: mitrichbel
Дата сообщения: 09.06.2007 20:08
Elroir

Цитата:
Я просил список последних строчек, чтобы воспроизвести ошибку.
ушло в личку
Автор: AntoshAReal
Дата сообщения: 09.06.2007 20:22
Народ, помогите, плиз

Надо сделать батник, который запустит прогу и закроется (сам батник, что бы его окно не висело)
А то надо этот Toonel.net запустить как службу, скомпилил в exe, установил как службу, пашет, но мешается окно

Запуск проги:


Код:
C:\WINDOWS\system32\javaw.exe -jar c:\toonel\toonel.jar -t
Автор: Elroir
Дата сообщения: 09.06.2007 20:26
AntoshAReal

Код: start C:\WINDOWS\system32\javaw.exe -jar c:\toonel\toonel.jar -t
Автор: AntoshAReal
Дата сообщения: 09.06.2007 20:33
Elroir,
Большое спасибо!
Что-то забыл про это
Автор: Maza Faka
Дата сообщения: 10.06.2007 08:29
FAPSUK
Без привлечения сторонних утилит.
Если исходный код в DOS кодировке, то и батник сохраняешь в DOS кодировке:

Код:
@Echo off
setlocal enabledelayedexpansion

for /f "delims=" %%a in (_text_.txt) do (
set string=%%a
set string=!string:ё=е!
set string=!string:^>="!
set string=!string:^<="!
set string=!string: = !
set string=!string:млн.=млн!
echo !string!>> out.txt)
Автор: wolf0425
Дата сообщения: 10.06.2007 09:43

Цитата:
но вот с кириллицей они у меня не заработали

что значит "не заработали"?
gsar.exe просто не считает их за буквы (Ignore case не работает) а в остальном - ищет/заменяет нормально.
только кодировка строки параметров и обрабатываемого файла должна совпадать
Автор: FAPSUK
Дата сообщения: 10.06.2007 10:14
Maza Faka ТЫ МАСТЕР!
Спасибо!!!
Автор: JohnRD
Дата сообщения: 10.06.2007 10:25
Elroir

спасибо большое
теперь дошло

еще несколько странный вопрос

каким образом можно вычислить имя машины или ip к которой было произведено подключение к рабочему столу с текущей машины и вставить это имя в переменную?
желательно учитывая логин человека который это делал, поскольку это терминальный сервер и соединений может быть больше одного

C:\Documents and Settings\john>netstat
Active Connections
Proto Local Address Foreign Address State
TCP asus:1032 10.0.0.2:3389 ESTABLISHED

есть процес
srv-Remote Desktop mstsc.exe ASUS\john

спасибо
Автор: FAPSUK
Дата сообщения: 10.06.2007 11:49
Еще вопрос -
Адаптировал БАТ-ник под свои нужды, получается косячок

55f.com 55 0 %1 _%1 (форматирует текстовую строку длиной 55 символов, отступ 0)

@Echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (_%1) do (
set string=%%a
set string=!string:ё=е!
set string=!string:^>="!
set string=!string:^<="!
set string=!string: = !
set string=!string:млн.=млн!
echo !string!>> out.txt)
del _%1
ren out.txt _%1

В текстовых файлах вместе с символом переноса строки стоит пробел, вместо которого в тексте вставляется текст:
Режим вывода команд на экран (ECHO) отключен.
Что с этим делать?

Текст текст текст
(тут пробел, вместо которого вставляется "Режим вывода команд на экран (ECHO) отключен.")
Текст текст текст

Добавлено:
Может написать строку замены символа переноса строки с пробелом на просто символ переноса строки?
Как в бат-нике прописать нажатие Alt+13"пробел" ?
Автор: Maza Faka
Дата сообщения: 10.06.2007 13:04
FAPSUK

Цитата:
ТЫ МАСТЕР!

Да какой я мастер...так любитель, мастера здесь igor_andreev и Elroir, а, я у них учусь


Цитата:
В текстовых файлах вместе с символом переноса строки стоит пробел, вместо которого в тексте вставляется текст:
Режим вывода команд на экран (ECHO) отключен.

В строке перенаправления текста в файл, поставь точку после "ECHO"

Код:
echo.!string!>> out.txt
Автор: Elroir
Дата сообщения: 10.06.2007 13:34
JohnRD

Цитата:
каким образом можно вычислить имя машины или ip к которой было произведено подключение к рабочему столу с текущей машины и вставить это имя в переменную?


Код:
@echo off
setlocal
for /f "tokens=4 delims=: " %%a in ('netstat ^| find ":3389"') do set "rdp_ip=%%a"
echo %rdp_ip%
Автор: FAPSUK
Дата сообщения: 10.06.2007 23:42
Maza Faka ВСЁ ЖЕ ТЫ МАСТЕР !
Еще раз спасибо!
ЗЫ. Да и тем парням сам Гейтс позавидует в том, что вы вытворяете с (если можно так сказать) ДОСом
Прям FIDORULEZ какой-то !
Автор: Elroir
Дата сообщения: 11.06.2007 00:36
mitrichbel
Пробуй следующий код (работает медленнее предыдущего, так что прежде чем он выдаст результат, может пройти минута-две) :

Код:
@echo off
setlocal enabledelayedexpansion
echo.
del /q /f "%temp%\fext.txt" 2>nul
del /q /f "%temp%\sext.txt" 2>nul
for /r %%a in (*.txt) do call :check %%~na
for /f "usebackq" %%a in ("%temp%\sext.txt") do (
echo Files grouped by "%%a" ending:
dir /s /b "* %%a.txt"
echo.
)
del /q /f "%temp%\fext.txt" 2>nul
del /q /f "%temp%\sext.txt" 2>nul
goto :EOF

:check
::maybe we've found last two part of filename
if "%3"=="" (
::if it realy consists of two parts
if not "%2"=="" (
set "test2=no"
set "test=%2"
    ::if second part is not zero
if not !test!==0 ( set /a "test1=!test!-1"
     ::if the result is -1 - it's not a number
     if not !test1!==-1 (set "test2=yes")
    ) else (
    ::if the second part is zero - OK, it's a number
    set "test2=yes")
    ::if we found number
    if !test2!==yes (
     ::check whether it is already in the list
     find "%2" "%temp%\fext.txt">nul 2>nul
     ::if not - add it to the list
if not !errorlevel!==0 (echo.%2>>"%temp%\fext.txt") else (
     find "%2" "%temp%\sext.txt">nul 2>nul
     if not !errorlevel!==0 (echo.%2>>"%temp%\sext.txt")
     )
    )
)
) else (
::the filename has more then 2 parts - shift it by 1 position to the left
shift
::try again
goto check
)
Автор: mitrichbel
Дата сообщения: 11.06.2007 10:27
Elroir
В результате получил несколько искомых пар. Спасибо тебе!
Автор: 01MDM
Дата сообщения: 11.06.2007 21:07
Подскажите, как вывести из файла строку, содержащую "!"


Код:
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('type %1') do (
    set line=%%i
    echo !line!
)
Автор: Elroir
Дата сообщения: 11.06.2007 21:20
01MDM

Код:
@echo off
for /f "delims=" %%i in ('type %1') do (
set line=%%i
call :echoline
)
goto :EOF
:echoline
echo %line%
Автор: 01MDM
Дата сообщения: 11.06.2007 21:24
Elroir
Большое спасибо, все перепробовал

Автор: euheny
Дата сообщения: 12.06.2007 02:59
как поместить размер файла (байты) в переменную
Автор: Elroir
Дата сообщения: 12.06.2007 03:03
euheny

Код: for %%a in (file.txt) do set "size=%%~za"
Автор: RRRomb
Дата сообщения: 12.06.2007 15:38
Хочу запустить файл из пакетного файла что я делаю не так
@echo off
Start C:\WINDOWS\Главное меню\Программы\Автозагрузка\VIKPOPUP.EXE

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Автозагрузка терминальной сессии


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