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

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

Автор: 01MDM
Дата сообщения: 10.08.2007 17:43

Цитата:
А зачем так сложно?


Зато dir /b все выводит по порядку, и в проводнике тоже.
Автор: SPV_Ed
Дата сообщения: 10.08.2007 19:12
01MDM

Цитата:
Переименнуй, так чтоб начинались с нуля, 001.jpg, 002.jpg и т.д

А толку то? Они переименуются в том порядке, в каком они перечислены в "dir /b", т.е. при этом новые порядковые номера будут иными.

Добавлено:
Elroir

Цитата:
Если известно последнее число (самое большое), можно так:

Количество файлов подсчитать не проблема:

Код: set filecount=0
for /f %%i in ('dir /b') do set /a filecount+=1
Автор: NIKZZZZ
Дата сообщения: 10.08.2007 20:19
SPV_Ed

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



Код: @echo off
;setlocal enabledelayedexpansion
echo. 1>nul 2>tmp.txt
for %%i in (*.jpg) do (
call:_prefics %%~ni "%%~dpnfi"
)
type tmp.txt | sort >tmp1.txt
goto:eof
:_prefics
set c=%1
if %c% leq 9 set pref=000%c%
if %c% gtr 9 set pref=00%c%
if %c% gtr 99 set pref=0%c%
if %c% gtr 999 set pref=%c%
echo %pref%,%2 >>tmp.txt
goto:eof
Автор: Elroir
Дата сообщения: 10.08.2007 20:53
SPV_Ed

Цитата:
Но дальше - что? Раз dir не в силах, то может как-то организовать вывод в файл имена файлов по порядковому номеру, а потом уже этот файл через type я его пристрою куда следует в цикл?

Не надо подсчитывать количество файлов, надо всего лишь подставить самое большое число, которое существует.
Если вместо "process.exe" в моем коде, ты подставишь "echo" - у тебя будет список файлов по порядку (числовому).
А вообще, не очень понятно, что тебя надо сделать - в какой цикл тебе нужно засунуть файлы?

Добавлено:
Кстати:

Цитата:
А толку то? Они переименуются в том порядке, в каком они перечислены в "dir /b", т.е. при этом новые порядковые номера будут иными.

После переименования, dir будет выдавать их именно в том порядке, который тебе нужен. Числа то остались прежними - просто добавились нули слева. Поэтому сортировка dir-а получится правильной.
Автор: NIKZZZZ
Дата сообщения: 10.08.2007 21:04
Elroir

Цитата:
подставить самое большое число, которое существует

И подождать несколько сотен лет
Автор: Elroir
Дата сообщения: 10.08.2007 21:06
NIKZZZZ
Ага
Но я, конечно же, имел в виду самое большое число из названий файлов.
P.S. Самое большое число, которое воспринимает CMD - это 2147483647.
Автор: JohnRD
Дата сообщения: 11.08.2007 00:27
KapralBel

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

вот http://support.microsoft.com/default.aspx?scid=kb;[LN];243486
оцените может даже положите в шапку

все работает даже если сделать logoff всех пользователей
запущены как сервисы с правами Local System

еще раз огромное спасибо
Автор: dominiksus
Дата сообщения: 11.08.2007 10:04
здраствуйте всезнающий Олл! помогите пожал. решить такую задачу средтвами батфайла.мне нужно при загрузке винды синхронизировать время через ntp сервер,но проблема лежит в том что сеть еще не поднялась (интернета нет) а батник уже запускается и естествено ничего не может синхронизировать. там нужно гдето секунд 10 подождать и потом уже запускать.
нужно в батнике проверить или есть интернет, и если да, то запускать команду синхронизации времени.
как?
Автор: Nagual
Дата сообщения: 11.08.2007 10:20
мужики, есть ли возможность сценарием или командой отобразить такой символ ???
Автор: 01MDM
Дата сообщения: 11.08.2007 11:28
dominiksus
Стандартныи средсвами время не обновляется никак, почему не знаю, даже если меняешь ntp-сервер, поэтому использую альтернативу.


Код:
@ECHO OFF

:: 10 sec timeout
ping -n 11 localhost >nul

for /f "tokens=9 delims== " %%i in ('ping google.com ^| find "TTL"') do (
    set PingGood=%%i
    )

if %PingGood%==TTL (
    goto TimeUpdate
    ) else (
    GOTO:EOF
    )

:TimeUpdate
net time /set
:: start "" "%USERPROFILE%\BIN\neutron\Neutron.exe"
Автор: dominiksus
Дата сообщения: 11.08.2007 12:47

Цитата:
:: start "" "%USERPROFILE%\BIN\neutron\Neutron.exe"

01MDM
это что за нейтрон,такого не нашел у себя
Автор: vu1tur
Дата сообщения: 11.08.2007 13:25
Nagual
три знака вопроса?
символ можно показать только тот, который присутствует в текущей кодовой таблице (а меняется она командой chcp).

01MDM

Цитата:
Стандартныи средсвами время не обновляется никак, почему не знаю, даже если меняешь ntp-сервер, поэтому использую альтернативу.

Почему это никак?

Код:
w32tm /resync
Автор: dominiksus
Дата сообщения: 11.08.2007 13:59

Цитата:
Стандартныи средсвами время не обновляется никак, почему не знаю, даже если меняешь ntp-сервер

обновляется
батник если его вручную запускать
net time /setsntp:"сервер1 сервер2"
Автор: 01MDM
Дата сообщения: 11.08.2007 14:27
dominiksus
vu1tur

Цитата:
это что за нейтрон,такого не нашел у себя

Это можешь удалить, программа для синхронизации времени.


Код:
# w32tm /resync
Команда синхронизации отправлена на local computer...
Обнаружена следующая ошибка: Сервер RPC недоступен. (0x800706BA)

# net time /setsntp:"time.windows.com time-nw.nist.gov clock.psu.edu"
Не удалось найти сервер времени.

Для вызова дополнительной справки наберите NET HELPMSG 3912.
Автор: dominiksus
Дата сообщения: 11.08.2007 14:32

Цитата:
# net time /setsntp:"time.windows.com time-nw.nist.gov clock.psu.edu"
Не удалось найти сервер времени.

странно, у меня данная конструкция синхронизирует часы:
net time /setsntp:"ntp2.cs.wisc.edu ntp1.cs.wisc.edu"
может у Вас firewall блокирует?
попробуйте с этих адресов
Автор: vu1tur
Дата сообщения: 11.08.2007 18:07
01MDM

Цитата:
Обнаружена следующая ошибка: Сервер RPC недоступен. (0x800706BA)

это уже, пожалуй, вопрос не для этой темы, посмотри темы фильтром по синхронизации в этом разделе и в сисадмах.
Автор: dominiksus
Дата сообщения: 11.08.2007 19:14
01MDM
правильно я понимаю, батник должен без лишнего выглядеть так ?

Цитата:
@ECHO OFF

:: 10 sec timeout
ping -n 11 localhost >nul

for /f "tokens=9 delims== " %%i in ('ping google.com ^| find "TTL"') do (
set PingGood=%%i
)

if %PingGood%==TTL (
goto TimeUpdate
) else (
GOTO:EOF
)

:TimeUpdate
net time /setsntp:"ntp2.cs.wisc.edu ntp1.cs.wisc.edu"
:: start ""...""

Автор: 01MDM
Дата сообщения: 11.08.2007 19:34
dominiksus
Все, что начинается с "::" это комментарий. Эти можно убрать. И еще по поводу синхронизации

Код:
net time /setsntp:"ntp2.cs.wisc.edu ntp1.cs.wisc.edu"
Автор: dominiksus
Дата сообщения: 11.08.2007 21:20
@ECHO OFF
ping -n 11 localhost >nul
for /f "tokens=9 delims== " %%i in ('ping google.com ^| find "TTL"') do (
set PingGood=%%i
)

if %PingGood%==TTL (
goto TimeUpdate
) else (
GOTO:EOF
)

:TimeUpdate
net time /setsntp:"ntp2.cs.wisc.edu ntp1.cs.wisc.edu"
w32tm /resync


такой в резултате получился батник.
net time /setsntp действительно не синхронизирует сами часы, а только назначает сервер(а)
однако, я не ставил /set в конце строки, поскольку проверил командой net time /querysntp и он показал именно мои 2 сервера
спасибо за помощь, буду тестить
Автор: igor_andreev
Дата сообщения: 12.08.2007 05:03
У меня в nnCron команда для синхронизации уже лет пять наверно выглядит так:

Код:
cmdtime SYNC /T /M:1000000000 time.windows.com fartein.ifi.uio.no tick.usask.ca ntp1.sp.se clock.psu.edu timelord.uregina.ca timex.cs.columbia.edu swisstime.ethz.ch
Автор: 01MDM
Дата сообщения: 12.08.2007 05:41
igor_andreev
Спасибо, давно искал консольную утилиту для синхронизации.


Автор: dominiksus
Дата сообщения: 12.08.2007 08:25
снова я. батник почему-то не работает, мелькает черное окно и все, время не синхронизируется


Код: if %PingGood%==TTL (
goto TimeUpdate
) else (
GOTO:EOF
)
Автор: NIKZZZZ
Дата сообщения: 12.08.2007 08:46
dominiksus

Цитата:
будут ли они выполнены ОБЕ при переходе на метку

Будут.

Цитата:
и пинать не в конец файла, а снова назад?

Можно и так, но желательно поставить паузу между попытками.

Автор: FXPELIVE
Дата сообщения: 12.08.2007 10:53
Помогите подправить код моего пакетника, для возможности запуска с параметрами.
Например: start_dt347.bat 0 "C:\1.iso" "C:\1.exe"

[more=Читать дальше..]
Код: @echo off
color F0
title Консоль

echo Дата: Время: Действие:
echo ---------- ---------- ------------------------------

rem ---------- * ---------- * ---------- * ---------- * ----------
rem Номер виртуального диска DAEMON Tools 3.47 ('0' - '3' allowed)
rem в большинстве случаев "0"
set number=

rem Полный путь до образа диска (в "")
set image=

rem Полный путь до исполняемого файла (в "")
set exe=
rem ---------- * ---------- * ---------- * ---------- * ----------

echo %date% %time% Включение эмуляции...
echo %date% %time% Эмуляция Safedisc
"C:\Program Files\D-Tools\daemon.exe" -safedisc on
echo %date% %time% Эмуляция Securom
"C:\Program Files\D-Tools\daemon.exe" -securom on
echo %date% %time% Эмуляция Laserlock
"C:\Program Files\D-Tools\daemon.exe" -laserlock on
echo %date% %time% Эмуляция RMPS
"C:\Program Files\D-Tools\daemon.exe" -rmps on



echo %date% %time% Монтирование образа %image% на виртуальный диск номер %number%...
"C:\Program Files\D-Tools\daemon.exe" -mount %number%,%image%

echo %date% %time% Запуск приложения %exe%
rem start /wait %exe%
%exe%
pause

echo %date% %time% Демонтирование образа %image% с виртуального диска номер %number%...
"C:\Program Files\D-Tools\daemon.exe" -unmount %number%



echo %date% %time% Отключение эмуляции...
echo %date% %time% Эмуляция Safedisc
"C:\Program Files\D-Tools\daemon.exe" -safedisc off
echo %date% %time% Эмуляция Securom
"C:\Program Files\D-Tools\daemon.exe" -securom off
echo %date% %time% Эмуляция Laserlock
"C:\Program Files\D-Tools\daemon.exe" -laserlock off
echo %date% %time% Эмуляция RMPS
"C:\Program Files\D-Tools\daemon.exe" -rmps off

echo %date% %time% Удаление переменных...
set number=
set image=
set exe=
Автор: NIKZZZZ
Дата сообщения: 12.08.2007 10:58
FXPELIVE


Код: set number=%1
rem Полный путь до образа диска (в "")
set image=%2
rem Полный путь до исполняемого файла (в "")
set exe=%3
Автор: FXPELIVE
Дата сообщения: 12.08.2007 11:14
NIKZZZZ
Спасибо.
Автор: 01MDM
Дата сообщения: 12.08.2007 12:09
dominiksus

Цитата:
net time /setsntp:"ntp2.cs.wisc.edu ntp1.cs.wisc.edu"
w32tm /resync


1.Оставь только w32tm /resync, значения для ntp-серверов итак уже в реестре.
2.

Цитата:
батник почему-то не работает, мелькает черное окно и все

Как ты его запускаешь? И где он лежит? Перемести его %PATH%, или указывай к нему полный путь, ну или для проверки запусти мышью. Окно не должно мелькать даже потому, что в начале кода 10-секундная пауза.
3. Еще раз посмотри, как ты его скопировал, иногда не видишь очевидные ошибки.


Автор: MsdLamer
Дата сообщения: 12.08.2007 14:14
Лазил по форуму но ответа так и не нашел, подскажите пожалуйста как сделать.

Есть файл 1.txt следующего содержания:

1234
3456

можно ли сложить эти два числа и результат вывести в файл 2.txt

Спасибо.
Автор: Elroir
Дата сообщения: 12.08.2007 14:37
MsdLamer
Можно.

Код:
@echo off
setlocal
for /f %%a in (1.txt) do (
if not defined first set "first=%%a"
set "second=%%a"
)
set /a "sum=first+second"
echo %sum%>2.txt
Автор: MsdLamer
Дата сообщения: 12.08.2007 14:55
Отлично работает СПАСИБО.

Но вот в еще маленький вопросик по этой же теме

сейчас сложил в файлике

6655.10
10197.90

вот эти числа, ответ в файле был 16852, а считаешь в ручную получаешь 16853.

Подскажите в чем проблемка и как решить. Спасибо.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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