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

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

Автор: 01MDM
Дата сообщения: 05.03.2008 18:31
angeltwo


Цитата:
есть альтернатива команде echo

??
Если не нужен перевод строки то можно использовать

Код:
@echo off
set /p=Some string<nul>file.txt
Автор: Nagual
Дата сообщения: 05.03.2008 18:45
Takuja
время в милисекундах хочешь получать из какой команды?
я так понял, ты сначала хочешь отрассировать сервер, а потом командой ping определить задержку до него?
делаешь для excel?
почему время без даты?
первая строка в файле отчёта неуместна при генерации кода, если ты хочешь постоянно дописывать отчёт, имхо, просто легче написать первую строку, а остальной отчёт генерировать кодом и дописывать в отчёт
Автор: angeltwo
Дата сообщения: 05.03.2008 19:03
01MDM
Перевод строки как раз нужен. Поясню суть задачи: есть батник, который берет список компов из тхт-файла, пингует их и на выходе получает 2 тхт-файла - один со списком ответивших компов (включенных), другой - со списком промолчавших компов (назовем их выключенными). Вывод списка производится командой echo. В получившихся файлах список выглядит следующем образом "namecomp пробел символ перехода на следующую строку"
В результате, если напрямую использовать файл для подстановки в psexec, то ничего работать не будет, надо предварительно удалить пробелы после nemecomp. wolf0425? посоветовал sed - спасибо ему, все нормально стало. Но если есть возможность штатными средствами Windows это сделать, то подскажите как, плиз.

Добавлено:
Прошу прощения за беспокойство, это я не тем местом думаю))) Для удобочитаемости я перед символом перенаправления вывода в файл и после него ставил пробелы - вот они и добавились в файл.))) Все в порядке!) Зато узнал о мощном текстовом процессоре sed )
Автор: 01MDM
Дата сообщения: 05.03.2008 20:01
angeltwo
Для примера, чтобы обработать переменную %namecomp%

Код:
@echo off
set "namecomp=compName "
echo с пробелом в конце "%namecomp%"

if "%namecomp:~-1,1%"==" " set namecomp=%namecomp:~0,-1%

echo без пробела "%namecomp%"
Автор: DrSqaer
Дата сообщения: 05.03.2008 20:33
Всем доброго времени суток!
Подскажите как к этому коду

Код:
set fso=Wscript.CreateObject("Scripting.FileSystemObject")
dir="c:\tmp\"
set f = fso.GetFolder(dir)
Set fc = f.Files
For Each f1 in fc
d= f1.DateCreated
diff=DateDiff("d",d,Now)
if diff>14 Then
WScript.Echo "DELETE! " & f1.name
fso.DeleteFile(dir & "\" & f1.name)
end if
Next
Автор: RaP1D
Дата сообщения: 05.03.2008 21:03
Прошу прощения за глупый вопрос, но как сделать сложение двух переменных?


Цитата:
set var1=100
set var2=1
set var3=var1+var2


Не работает!

Уже не надо:
Забыл символ /a после set
Автор: Nagual
Дата сообщения: 05.03.2008 22:48
Takuja

Код: @echo off
set serv_list=ya.ru rambler.ru
for %%a in (%serv_list%) do (
set
list=%%a
for
/f "tokens=8" %%b in ('tracert %%a') do set "serv=%%b"
call:t
for
/f "tokens=8 delims== " %%d in ('ping %%serv%%^|findstr TTL') do echo %%d>>log.txt)
goto:eof
:t
set
"serv=%serv:[=%"
set "serv=%serv:]=%"
echo %date% %time:~0,-3% %list%>>
log.txt
Автор: ru1956
Дата сообщения: 05.03.2008 23:17
Nagual

Цитата:
наваял тебе в качестве примера, дальше дорабатывай команды и вывод сам

Скажите, Уважаемый, в какой кодировке сохранять этот файл, скопировав его с данной страницы?
И вообще, как определить в какой кодировке написан файл и в какой его сохранять.
Автор: KapralBel
Дата сообщения: 06.03.2008 12:00
ru1956
Сохранять в кодировке 866 (OEM)
Хотя тут нет русских букв - поэтому можно и в 1251 (ANSI)
Автор: ru1956
Дата сообщения: 06.03.2008 12:41
KapralBel

Цитата:
Хотя тут нет русских букв - поэтому можно и в 1251 (ANSI)

Однако, как же определить в какой кодировке написан файл?
Ну, сохранять, скорее всего нужно в той кодировке, в которой он написан?
Автор: 3y6acTuK
Дата сообщения: 06.03.2008 13:39
Помогите плиз написать батфайлик (споткнулся на некоторых моментах):

1) Как узнать директорию, из которой вызывается bat (сам bat в другом каталоге)
2) Как вставить пустую строку в текстовый файл (echo или др. команда это может? не хотелось бы усложнять)
3) Как заменить в текстовом файле одну подстроку на другую? Или удалить подстроку?
4) Как увеличить счетчик в имени файла, чтобы имя было уникально и не повторяло уже имеющиеся (тоже с цифрами в конце)


Автор: igor_andreev
Дата сообщения: 06.03.2008 13:59
Подскажите пожалуйста, что выдает echo %CMDEXTVERSION% в Vista? А то ни одной Vist-ы вокруг нету...
Автор: Nagual
Дата сообщения: 06.03.2008 14:03
ru1956
в данном случае (отсутствие кирилических символов на входе команд) код можно сохранять в любой кодировке, однако, вывод в файл отчёта будет в кодировке 866 (особенности команды ping)
на мой взгляд, идеальный редактор для автоопределения кодировки файла Akelpad
прекрасно работает в том числе и с кодировкой 866 (DOS)
хотя для подстветки синтаксиса, имхо Akelpad3 слабоват будет
Автор: 01MDM
Дата сообщения: 06.03.2008 14:15
3y6acTuK

1. команда cd или echo %cd%
2. echo.> или >>1.txt
3. цикл for или утилиты gsar, sed, awk, replacer...
4. добавляй к названию дату+время, например:

Код:
@echo off
set postname=%date:.=%%time::=%
set postname=%postname:,=%
cd.>NewFile%postname%.txt
Автор: TKVzic
Дата сообщения: 06.03.2008 15:42
Помогите плиз. Как через батник создать ярлык к папке и назначить доступ пользователю только на чтение?
Автор: Elroir
Дата сообщения: 06.03.2008 16:24
igor_andreev
На Vista Ultimate выдает число 2.

TKVzic
Ярлык можно создать только с помощью сторонних утилит, вроде nircmd (ссылка есть в шапке).
Автор: bobojon
Дата сообщения: 06.03.2008 17:15
ПОМОГИТЕ новичку:У меня одна программка должна работать постоянно!!! - но иногда она сама по себе вырубается. Вот хотелось узнать можно ли сделать так (с помощью батника) что бы она сразу же запускалась? Заранее благодарю.
Автор: king_stiven
Дата сообщения: 06.03.2008 17:20
3y6acTuK
1. echo %%~dp0
Автор: 3y6acTuK
Дата сообщения: 06.03.2008 17:23
01MDM

Цитата:

Цитата: 4) Как увеличить счетчик в имени файла, чтобы имя было уникально и не повторяло уже имеющиеся (тоже с цифрами в конце)

4. добавляй к названию дату+время, например
Автор: Nagual
Дата сообщения: 06.03.2008 17:29
Elroir
да, в принципе, можно обойтись и стандартными средствами, а именно, написать гибридный (cmd+cscript) сценарий или чисто скрипт
TKVzic
для доступа к объектам юзай утилиту cacls/?
лично мне задача не интересна, поэтому писать лень, но может найдутся другие...
а вот и пример скрипта для создания ярлыка к файлу пожаловал
1.vbs
Код: Set WshShell=CreateObject("WScript.Shell")
Set
WshShortcut=WshShell.CreateShortcut("C:\Notepad.lnk")
WshShortcut.Arguments="C:\autoexec.bat"
WshShortcut.Description="Пробный ярлык"
WshShortcut.HotKey="CTRL+ALT+F"
WshShortcut.IconLocation="shell32.dll,5"
WshShortcut.TargetPath="notepad.exe"
WshShortcut.WindowStyle=1
WshShortcut.WorkingDirectory="C:\"
MsgBox WshShortcut.FullName
WshShortcut.Save
Автор: 3y6acTuK
Дата сообщения: 06.03.2008 18:13
5) Как очистить дерево каталогов от файлов (удалить все файлы, оставив каталоги)?
6) что значит и что делает конкретно точка после команд (например echo. или cd.) ?
Автор: bobojon
Дата сообщения: 06.03.2008 18:17
Напишите мне пожалуйста,а то я у вас новичок. надо чтобы запускалась с этой директории D:\SOFITCOM\Router\router.exe . Спасибо
Автор: 01MDM
Дата сообщения: 06.03.2008 18:24
3y6acTuK

Цитата:
То есть последовательная нумерация, в таком виде:
имя001.ext
имя002.ext
....
имя235.ext


Все зависит от контекста самого батника. Пока вот такой общий пример

Код:
@echo off

set cnt=1
for /f %%i in ('dir /b file*.txt') do set /a cnt+=1

set cnt=00%cnt%
cd.>"file%cnt:~-3%.txt"
Автор: 3y6acTuK
Дата сообщения: 06.03.2008 18:47
01MDM
О, тогда чтобы начинать с наибольшего номера (ведь могут быть пропуски в номерах файлов), тогда ставим cnt=999 и уменьшаем cnt-=1
Сейчас попробую
Автор: bobojon
Дата сообщения: 06.03.2008 18:52
МОжет я не првильно задал вопрос? Сори..! Так вот как я упоминал выше моя программка (D:\SOFITCOM\Router\router.exe) должна работать постояно. я буду благодарен если вы мне поможете написать батник который бы следил за ним каждые 5 мин. и в случае отключения сразу же запускал его! Если конечно это возможно.
Автор: 3y6acTuK
Дата сообщения: 06.03.2008 19:25
Нет, не получится как я хотел - нужно удостовериться, что файл не существует... а FOR может кажется только проверять существование элемента в списке...
Автор: king_stiven
Дата сообщения: 06.03.2008 19:35
3y6acTuK
исправил
echo %~dp0

Добавлено:
3y6acTuK
5.

Код: for /f "usebackq tokens=*" %%c in (`dir /b /s /a:-d`) do del "%%c"
Автор: 3y6acTuK
Дата сообщения: 06.03.2008 20:36

Цитата:
for /f "usebackq tokens=*" %%c in (`dir /b /s /a:-d`) do del "%%c"

А что оно делает? Просто не пойму как это вставить - что такое %%c здесь? Если это имя файла, то мне не нужно файл удалять, а только проверить, что отсутствует файл с таким именем.
Автор: 01MDM
Дата сообщения: 06.03.2008 20:41
3y6acTuK

Цитата:
5) Как очистить дерево каталогов от файлов (удалить все файлы, оставив каталоги)?


del /s /a /q Folder\*.*


Цитата:

Нет, не получится как я хотел - нужно удостовериться, что файл не существует... а FOR может кажется только проверять существование элемента в списке...

Что не получится? Напиши подробнее.
Автор: king_stiven
Дата сообщения: 06.03.2008 20:58
3y6acTuK
Ты спросил:

Цитата:
5) Как очистить дерево каталогов от файлов (удалить все файлы, оставив каталоги)?

Я ответил:

Код: for /f "usebackq tokens=*" %%c in (`dir /b /s /a:-d`) do del "%%c"

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

Предыдущая тема: Доступ к реестру через RegEdit?


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