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

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

Автор: GORA2
Дата сообщения: 17.05.2007 13:00
wolf0425
Цитата:
но неужели список настолько длинный, что это на что-то влияет? сколько строк в реальных списках?
А столько, сколько их может быть к какой либо папке у пользователя. Кто ж его знает сколько он имеет там файлов/папок. Может 100, а может несколько тысяч?
Цитата:
остановить подсчет после четырех var
На этом можно прекратить подсчет, все нужные мне переменные уже определены.
Автор: Maza Faka
Дата сообщения: 17.05.2007 14:28
GORA2
Мудрённый у тебя какой-то батник получается, плагин к Total Commander-у пишешь?
Что вообще ты хочешь делать при помощи этого батника? Может найдётся другое решение?
Автор: GORA2
Дата сообщения: 17.05.2007 14:58
Maza Faka
Ну плаги не плагин, но делать много чего хочу с помощью этого батника. Другое решение конечно найдется, но я учусь. Дайте насладиться процессом
Автор: wolf0425
Дата сообщения: 17.05.2007 15:02
GORA2 наверно так
Код: @echo off
setlocal enabledelayedexpansion
CHCP 1251>nul

set allfile=0
set flagmany=0
for /f "tokens=*" %%i in (%1) do (
set /a flagmany+=1 & set "tempi=%%~i" & IF "%%~nxi"=="" (
for /F "tokens=*" %%a in ("!tempi:~0,-1!") do set "soursename=%%~na" & set "soursepart=%%~dpa"
) else (
set /a allfile+=1 & set "var!allfile!=%%~i" & set "soursename=%%~ni" & set "soursepart=%%~dpi" & if !allfile! equ 4 goto :_check
)
)
:_check
If !Flagmany! Gtr 1 for /F "tokens=*" %%a in ("!soursepart:~0,-1!") do set "soursename=%%~na"
IF "!soursepart:~-2!"==":\" set "soursename=Archive"

CHCP 866>nul
echo. part=%soursepart%
echo. name=%soursename%

echo call :_normlvars "%var1%" "%var2%" "%var3%" "%var4%"
EXIT
Автор: GORA2
Дата сообщения: 17.05.2007 15:22
wolf0425
Спасибо. Дома посмотрю, будут проблемы - отпишусь.
Автор: 0Vovan0
Дата сообщения: 18.05.2007 00:34
мб тупой вопрос , но как батником просто создать пустой файл?
надумал @ECHO OFF>FILE , но может как-то проще можно?
Автор: Elroir
Дата сообщения: 18.05.2007 00:44
0Vovan0
Чуть проще :

Код:
echo.>file
Автор: NIKZZZZ
Дата сообщения: 18.05.2007 00:53
Elroir

Цитата:
echo.>file

Это не пустой файл, он содержит 2 символа.

Код: break>file
Автор: Elroir
Дата сообщения: 18.05.2007 01:21
NIKZZZZ
Прав. Но можно поспорить - мой вариант содержит два невидимых символа
Автор: NIKZZZZ
Дата сообщения: 18.05.2007 01:51
Elroir

Цитата:
мой вариант содержит два невидимых символа

В текстовом файле это пустая строка, что не всегда хорошо.
Уж если уж все делать правильно:

Код: Fsutil file createnew file 0
Автор: pom205
Дата сообщения: 18.05.2007 01:56
Мужики, подскажите, как сделать. Есть reg-файл в нём пути к папкам и файлам, как их автоперепрописать (ну пусть они в виде некой переменной %ThisFolderPath%), к папке запуска. Т.е. в указанных конфигурационных (reg, ini...) файлах пути поменять на текущие? Тут, видимо какая то утилитка нужна масюсенькая, но какая - загадка вселенной.
Автор: NIKZZZZ
Дата сообщения: 18.05.2007 02:06
pom205
Посмотри в шапке работа с текстом -> замена текста в файлах.
Автор: Maza Faka
Дата сообщения: 18.05.2007 07:11
pom205

Код:
gsar -s"Старый текст" -r"Новый текст" -o File.reg
Автор: wolf0425
Дата сообщения: 18.05.2007 07:49
0Vovan0

Цитата:
мб тупой вопрос , но как батником просто создать пустой файл?
надумал @ECHO OFF>FILE , но может как-то проще можно?

echo. 2>file
в отличие от break>file - нет скрытых побочных эффектов
Автор: GORA2
Дата сообщения: 18.05.2007 08:30
wolf0425У Вас было
Цитата:
If !Flagmany! Gtr 1 for /F "tokens=*" %%a in ("!soursepart:~0,-1!") do set "soursename=%%~na"
IF "!soursepart:~-2!"==":\" set "soursename=Archive"
сделал так
Цитата:
If !Flagmany! Gtr 1 for /F "tokens=*" %%a in ("!soursepart:~0,-1!") do set "soursename=%%~na" & IF "!soursepart:~-2!"==":\" set "soursename=Archive"
Иначе при работе в корне диска soursename=Archive ВСЕГДА. А это противоречит п.2в в ТЗ.
Вопрос. Почему Вы используете
Цитата:
for /F "tokens=*" %%a in ("!soursepart:~0,-1!") do set "soursename=%%~na"
вместо
Цитата:
FOR /D %%a IN ("!soursepart:~0,-1!") DO set "soursename=%%~na"
Запись то немного длиннее получается. В этом есть какой то скрытый смысл?




Автор: wolf0425
Дата сообщения: 18.05.2007 10:49

Цитата:
Почему Вы используете
for /F "tokens=*" %%a in ("!soursepart:~0,-1!") do set "soursename=%%~na"
вместо
FOR /D %%a IN ("!soursepart:~0,-1!") DO set "soursename=%%~na"
Запись то немного длиннее получается. В этом есть какой то скрытый смысл?

1. привычка - я чаще оффлайновые списки обрабатываю или текст.
2. если в обрабатываемой строке нет * или ? - разницы никакой,
если есть - то for /f выдаст строго одну (первую) строку, раскрытую в соответствии с текущим содержимым диска, или как в оригинальном виде если на диске таких файлов/каталогов нет.
а for /d с таким параметром - может выдать и много строк (все, что подходят под *) и ни одной (если сейчас таких каталогов нет).
Предпочитаю определенность в количестве проходов - мало ли что в список попадет


Цитата:
Иначе при работе в корне диска soursename=Archive ВСЕГДА

что ж, недочитал.

Добавлено:
Maza Faka

Цитата:
gsar -s"Старый текст" -r"Новый текст" -o File.reg

1. ссылка что ты дал - дохлая. в следующий раз не поленись проверить.
2. очень вероятно что в данном конкретном случае gsar очень неудобен -
gsar -s"c:\" -r"d:\" -o File.reg
пожалуется на некорректные аргументы. лучше уж файлик из шапки.
Автор: Elroir
Дата сообщения: 18.05.2007 11:46
wolf0425

Цитата:
ссылка что ты дал - дохлая. в следующий раз не поленись проверить.

Ссылка рабочая - все качается.
Автор: igor_andreev
Дата сообщения: 18.05.2007 12:16

Цитата:
2. очень вероятно что в данном конкретном случае gsar очень неудобен -
gsar -s"c:\" -r"d:\" -o File.reg
пожалуется на некорректные аргументы.

Хэлп читать надо Если запустить gsar без параметров, там про это будет написано. Двоеточие необходимо удвоить. И обратный слеш удвоить.
Автор: wolf0425
Дата сообщения: 18.05.2007 12:55
igor_andreev

Цитата:
Хэлп читать надо

так бесполезно - от этого удвоение более удобным не станет же.
в том же sed удваивать придется только бакслеши, а в тупой програмке из шапки - таких проблем чрезмерного ума нет, как и необходимости таскать комплект экзешников...

в .reg и так бэкслеши обычно удвоены, ещё раз их удваивать - недолго и запутаться
Автор: Maza Faka
Дата сообщения: 18.05.2007 14:37
wolf0425
Ты прав, именно в этом случае "gsar" и "sed" не подойдут.
Если reg-файл будет в кодировке Unicode, "gsar" просто не работает, "sed" работает, но спотыкается на строках с ":" и "\\" (например никак не смог заменить в рег-файле строку "C:\\Program Files\\MyProg" на "D:\\Install\\Program")
А вот стандартными средствами reg-файл в кодировке Unicode разобрать можно, через "Type".
Автор: Elroir
Дата сообщения: 18.05.2007 14:42
Maza Faka

Цитата:
А вот стандартными средствами reg-файл в кодировке Unicode разобрать можно, через "Type"

Тогда уж через "more" - он полностью поддерживает Unicode.
Автор: Maza Faka
Дата сообщения: 18.05.2007 14:45
Elroir

Цитата:
Тогда уж через "more" - он полностью поддерживает Unicode.

А "type" поддерживает его частично?
Автор: pom205
Дата сообщения: 18.05.2007 15:00
От сенькью, так сенькью. Сейчас изучу!

Добавлено:
Ребяты, с реестром проблему решил, читаем в шапке
Цитата:
Переменная %0
.
Заталкиваем reg-файл в реестр прямо с переменной
Цитата:
некой переменной %ThisFolderPath%
. И
уже там её меняем на
Цитата:
Переменная %0
.
Потестите локализатор, плиз.

Добавлено:
Мужуки, вы не поняли. Проблема не в замене текста, а В ВЫЧИСЛЕНИИ ТЕКУЩЕГО ПУТИ запуска локализатора!

Добавлено:
PowerGrep имеет подобные переменные. Типа выстроить все ссылки ОТНОСИТЕЛЬНО выбранного пути. Но он же - монструоза неудобная.
Автор: igor_andreev
Дата сообщения: 18.05.2007 15:32
Maza Faka

Цитата:
А "type" поддерживает его частично?

А type делает из него ANSI. Этож самый простой способ переконвертировать unicode, с type...
type unicode.txt>ansi.txt
Автор: renreg
Дата сообщения: 18.05.2007 15:58
Честно говоря, все страницы тем читать не смог. Пролистал наугад, но не нашел.

Для запуска программ с флешки или с компакт-диска я пользу.сь bat-файлами. Но это некрасиво. Существует ли программа, которая делает подобные операции и записвает все в один ехе-шник с возможность создания значка соответствующего программе.

Или я мнго хочу?
Автор: pom205
Дата сообщения: 18.05.2007 16:20
renreg
Я пхаю в самараспаковывающиеся архивы с параметрами автозапуска регистрационных файлов по извлечении.
Есть ишшо Thinstall и Molebox.
Автор: Levitant
Дата сообщения: 18.05.2007 16:27
Ребят помогите пожалуйста
Есть подключение ВПН

Подключается следующим образом

rasphone -d "haz 2"

А как сделать проверку каждые 10 минут, если не запущено подключение, то запускать его.

Можно и не проверять запущено оно или нет а просто сразу запускать, т.к если оно запущено, то просто ничего не произойдет
Автор: wolf0425
Дата сообщения: 18.05.2007 16:28

Цитата:
Проблема не в замене текста, а В ВЫЧИСЛЕНИИ ТЕКУЩЕГО ПУТИ запуска локализатора!

а ТУТ в чем нашел проблему?
set "tempparth=%cd:\=\\%" для подготовки к замене в экспортированную в формат REGEDIT4 регистри...

если нужен не текущий путь, а путь к запущенному батнику - пользуй %~dp0
Автор: NIKZZZZ
Дата сообщения: 18.05.2007 16:41
renreg

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

Например WinRar - он позволяет создать самораспаковывающийся архив с запуском нужной программы, для батников можно использовать Quick Batch File Compiler , который позволяет упаковать нужные файлы в один EXE и запустить батник, при этом есть возможность запускать такой батник в скрытом виде.




Добавлено:
Levitant

Цитата:
А как сделать проверку каждые 10 минут, если не запущено подключение, то запускать его.

Страницы 4-5 назад как раз была эта задача.

Автор: Maza Faka
Дата сообщения: 18.05.2007 19:06
Levitant

Цитата:
А как сделать проверку каждые 10 минут, если не запущено подключение, то запускать его


Код:
@Echo off
:dial_
ipconfig | Find /i "haz 2">nul || rasphone -d "haz 2"
ping -n 601 -w 1000 127.0.0>nul
goto :dial_

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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