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

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

Автор: king_stiven
Дата сообщения: 13.03.2008 19:46
VitAll2013

Цитата:
потом выбирает самый последний из них (по дате создания)

с точностью до минуты можно выбрать, но не до секунды. Хотя может кто утилитки готовые подскажет...
Автор: gbcfkf
Дата сообщения: 14.03.2008 05:03
День добрый
Подскажите что надо дописать, чтобы при запуске батника
start file_reestra.reg
не нужно было отвечать на подтверждение о внесении записи в реестр?

Maza Faka
Спасибо
Автор: Maza Faka
Дата сообщения: 14.03.2008 06:55
gbcfkf

Код:
@echo off
start /wait regedit.exe /s "c:\file_reestra.reg"
Автор: VitAll2013
Дата сообщения: 14.03.2008 07:06
king_stiven

Меня устроит и до даты, если до минуты то это просто офигенно.

Я не силён в батописании, подмогните кому интересно. Для инсталяторов такой батник нужен, когда программа не оставляет в реестре записи о том где и когда она установлена. Другим, уверен, пригодилось бы.
Автор: Maza Faka
Дата сообщения: 14.03.2008 07:48

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

Сделай снимок реестра до установки программы и после, затем сравнивай их.
Автор: VitAll2013
Дата сообщения: 14.03.2008 11:17
Maza Faka

Я потому и пишу что в реестре изменений нет. Надо, получается, руками найти программу, потом доустановить в нужное место аддон. Это то что я пытаюсь сделать, а так можно обновить саму программу, выйти на программу работающую в связке с этой, ну и прочие выкрутасы организовать.
Автор: storm2005
Дата сообщения: 14.03.2008 18:37
Две задачки.

1.Есть каталог в котором много файлов созданных за различный промежуток времени. Необходимо в данном каталоге создать каталоги соответствующие датам создания файлов год_месяц_число. Далее переместить файлы с определенной датой создания в соответствующий каталог.

2.Каждый день создавать каталог с текущей датой и помещать в него файлы с текущей датой.
Автор: king_stiven
Дата сообщения: 14.03.2008 20:04
VitAll2013

Код: @echo off
for %%b in (c d e f g h j) do (
cd /d %%b:\
for /r %%c in (.) do (
cd /d %%c
for /f "usebackq tokens=1,2,3,4,5,6* delims=.,:, " %%d in (`dir /t:c /a:-d`) do if "%%j"=="file.exe" (
set "file=%%j"
call :qwe %%f%%e%%d 1%%g%%h
)
)
)
set end=yes
call :qwe
echo %way_fo_install%
pause
goto :eof
:qwe
if "%1" GTR "%t1%" (
set "way_fo_install=%cd%\%file%"
set t1=%1
set t2=%2
) else if "%1"=="%t1%" (
if "%2" GTR "%t2%" (
set "way_fo_install=%cd%\%file%"
set t1=%1
set t2=%2
)
)
if defined end set way_fo_install=%way_fo_install:~0,-10%
Автор: Elroir
Дата сообщения: 15.03.2008 00:10
storm2005
Запусти в консольном окне команду:

Код: for %a in (*.*) do echo %~ta
Автор: king_stiven
Дата сообщения: 15.03.2008 02:06
VitAll2013

Код: @echo off
chcp 1251 > nul
set file=file.exe
for %%b in (c d e f g h) do (
cd /d %%b:\
for /f "usebackq tokens=1,2* delims= " %%c in (`dir "%file%" /t:c /a:-d /s`) do (
if "%%c%%d"=="Содержимоепапки" (
cd /d "%%e"
) else (
for /f "tokens=1,2,3,4,5,6* delims=.,:, " %%f in ("%%c %%d %%e") do if "%%l"=="%file%" (
call :qwe %%h%%g%%f 1%%i%%j
)
)
)
)
set end=yes
call :qwe
echo %way_fo_install%
pause
goto :eof
:qwe
if "%1" GTR "%t1%" (
set "way_fo_install=%cd%\%file%"
set t1=%1
set t2=%2
) else if "%1"=="%t1%" (
if "%2" GTR "%t2%" (
set "way_fo_install=%cd%\%file%"
set t1=%1
set t2=%2
)
)
if defined end set way_fo_install=%way_fo_install:~0,-10%
Автор: MazayK
Дата сообщения: 15.03.2008 06:45
Обращаюсь к специалистам.
В локальной сети 4 компьютера, поключённые к коммутатору. Необходимо с одного из них разрешать или запрещать ТОЛЬКО ВЫХОД в Интернет определенному компу. В локальной сети он должен оставаться всегда. Можно ли решить такой вопрос на командных файлах?! Если такое обсуждалось, то, пожалуйста, дайте ссылку.
Очень благодарен.
Автор: Maza Faka
Дата сообщения: 15.03.2008 08:34
MazayK
А при чём здесь батники? Ставь прокси программу и разграничивай доступ в интернет.
Автор: MazayK
Дата сообщения: 15.03.2008 09:49
Дело в том, что в последствии работать буду не я, а дамы юристки. И им не осилить такие сложности. Вот и хочу как можно проще.
Автор: Omul2
Дата сообщения: 15.03.2008 19:20
Подскажите плиз, как можно сделать условие, сравнив два файла по дате создания или изменения, например если файл A новее файла Б - делаем то-то, если нет - другое. Голову уже сломал. Спасибо. Файлы находятся на рахных дисках.
Автор: VitAll2013
Дата сообщения: 15.03.2008 22:52
king_stiven

Немного доработал её


Цитата:
@echo off
for %%b in (d) do (
cd /d %%b:\
for /r %%c in (.) do (
cd /d %%c
for /f "usebackq tokens=1,2,3,4,5,6* delims=.,:, " %%d in (`dir /t:c /a:-d`) do if "%%j"=="file.exe" (
set "file=%%j"
call :qwe %%f%%e%%d 1%%g%%h
)
)
)
set end=yes
call :qwe
echo %way_fo_install%
pause
goto :eof
:qwe
if "%1" GTR "%t1%" (
set "way_fo_install=%cd%\%file%"
set t1=%1
set t2=%2
) else if "%1"=="%t1%" (
if "%2" GTR "%t2%" (
set "way_fo_install=%cd%\%file%"
set t1=%1
set t2=%2
)
)
if defined end reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment" /v way_for_install /t reg_sz /d "%way_fo_install:~0,-10%" /f


Вторая не правильно работает, так как у меня английская винда + МУИ. Также сильно копать не стал так как в задумке сделать универсальный батник, для всех винд.

Вопросы такие: как сделать его действия по тихому (по крайней мере без "Файл не найден") и как убрать подтверждение в конце, чтоб он самозавершался?

Да и большое спасибо, оф кос.
Автор: king_stiven
Дата сообщения: 16.03.2008 02:56
VitAll2013
Всё же лучше использовать 2 вариант. Запусти в консоли в корне диска
dir "%file%" /t:c /a:-d /s
вставив вместо %file% существующий файл, что он пишет по английски вместо "Содержимое папки"?


Цитата:
как убрать подтверждение в конце, чтоб он самозавершался?

убери

Цитата:
echo %way_fo_install%
pause

Автор: Astron
Дата сообщения: 16.03.2008 03:44
Elroir
Спасибущи огромные! Всё работает на ура!!!
Автор: VitAll2013
Дата сообщения: 16.03.2008 08:17
king_stiven

Пишет вот так, MUI и тут руссифицировал... Могу отключить MUI (хотя для чистоты эксперемента надо WINDOWS совсем без MUI)


Цитата:
D:\>dir "file.exe" /t:c /a:-d /s
Том в устройстве D не имеет метки.
Серийный номер тома: C873-6220

Содержимое папки D:\Experement\

09.12.2007 11:38 6 217 728 file.exe
1 файлов 6 217 728 байт

Всего файлов:
1 файлов 6 217 728 байт
0 папок 11 050 561 536 байт свободно


(Предыдущее название файла было взято для чистоты эксперемента - забыл поправить просто, чтоб было в оговоренной системе имён)

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


Цитата:
rem chcp 1251 > nul


то пишет по русски


Цитата:
Файл не найден
Файл не найден

Операция успешно завершена
Режим вывода команд на экран (ECHO) отключен.
Для продолжения нажмите любую клавишу . . .


что в общем то числено - по символам, соответствует крокозяблам. Но путь, точнее переменная %way% оказывается пустой. В принцыпе по замыслу бантик запускается в хайд режиме, после его работы просто получается переменная пути которую потом использует вторая часть инсталятора, не ясно сможет ли он работать на всех версиях Windows XP... 1251 - это кодовая страница кирилицы? ... вообще строчка

Цитата:
chcp 1251 > nul

что говорит системе?

...сделаю, пришлю.
Автор: king_stiven
Дата сообщения: 16.03.2008 09:29
VitAll2013
В общем с английской винды текст пришлёшь, лучше все варианты с муи и без, батник допишу.

Добавлено:
Почему он при
Цитата:
dir "proe.exe"

далее пишет
Цитата:
file.exe
, непонятно. Текст скопирован верно?



Добавлено:
насчёт
chcp 1251 > nul
я спрашивал у Elroir, он писал, что английской винде это не помешает.
2-й вариант подправил, попробуй.
Автор: VitAll2013
Дата сообщения: 17.03.2008 09:45
king_stiven

C последними изменениями теряется путь, тоесть в переменной way_fo_install есть только D:\\file.exe
Автор: king_stiven
Дата сообщения: 17.03.2008 10:20
VitAll2013

Код: ещё поправил 2 вариант, только для кириллицы. Учитывай ещё
Цитата:
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!

Автор: VitAll2013
Дата сообщения: 17.03.2008 10:42
С пробелами разобрался сразу, а вот с 1251 кодировкой чтото не понял. Если сохранять обычным блокнотом то там выбор из ANSI, Unicode, Unicode big endian и UTF-8. Но я работаю с Notepad++ там возможностей больше и как правильно подготовить-сохранить файл не знаю. Так сохранял в ANSI постоянно.

Учитывая последние изменения на 11-10 Москвы проблема с D:\\file.exe осталась. Пробую сохранить во всевозможных кодировках.
Автор: Nthnsq
Дата сообщения: 17.03.2008 10:45
А с VBS+Vista - никто не поможет? А то тут - мертво
Автор: storm2005
Дата сообщения: 17.03.2008 11:07
Elroir
>Запусти в консольном окне команду:
>for %a in (*.*) do echo %~ta

20.02.2008 14:54

комп на котором нужен батник - русский win2003 sp2
Автор: VitAll2013
Дата сообщения: 17.03.2008 12:43
king_stiven
Сохранение в других кодировках ничего не дало. Переменная cd по прежнему равна D:\
Автор: Elroir
Дата сообщения: 17.03.2008 14:00
storm2005

Код:
@echo off
setlocal
set "dirname=C:\Temp"
pushd "%dirname%"
for %%a in (*.*) do call :move_files "%%a" "%%~ta"
popd
goto :EOF
:move_files
set "tdir=%~2"
set "dir_name=%tdir:~6,4%%tdir:~3,2%%tdir:~0,2%"
md "%dir_name%" 2>nul
move %1 "%dir_name%"
Автор: VitAll2013
Дата сообщения: 17.03.2008 14:41
Проверил в cmd все chcp - нормально работает только 866 - тоесть после chcp 866 печатает по русски и правильные символы - остальные 1251, 1252, 20866, 21866 и 437 лучшем случии дают неправильно набранную кирилицу.
Автор: king_stiven
Дата сообщения: 17.03.2008 14:47
VitAll2013
Убери в батнике
@echo off
запусти его, и проанализируй, где закавыка. У меня нормально.
Замени строчку
if "%%c%%d"=="Содержимоепапки" (
на
if "%%c%%d"=="╤юфхЁцшьюхяряъш" (
и сохрани батник в 866 кодировке
chcp 1251 > nul нужно, если в путях есть кириллица
Автор: JohnRD
Дата сообщения: 17.03.2008 16:22
добрый день
есть некоторые вопросы.

можно ли в батнике запускать что либо через RUNAS
нужно следующее:
ПК залогинен из под юзера (не локал админа)
нужно первой строкой батника установить программу из под локал админа через RUNAS
сдедующей строкой батника в профиле юзера сделать изменения(уже от имени самого юзера).

и еще
RUNAS запускается так RUNAS [/user:<UserName>] program
можно ли создать переменную которую можно подставлять вместо <UserName>

чтото типа такого:
запустил батник, у тебя вопрос: от какого имени вы хотите поставить программу?
вы вписываете это имя и оно помещается в значение переменной
Set UserName=........

далее строка батника
RUNAS /user:%UserName% msjavx86.exe /c:"javatrig.exe /exe_install /l /q" /q:a /r:n как пример
после будет предложение вбить пароль того локал админа..
вы вбиваете его..
он ставит прогу из под локал админа.
а далее строка батника уже из под юзера
xcopy %~dp0user_settings.xml "%APPDATA%\....\" /Y

спасибо
Автор: VitAll2013
Дата сообщения: 17.03.2008 16:42
king_stiven
Анализ - чуть не свихнулся... =)

Поменял "Содержимоепапки" на "Directoryof" - вроде заработало, буду тестить. Както чудом получилось

Как сохранить в 866 так и не понял

По логике в данном месте, где "Содержимоепапки", что должно происходить? Какое сравнение ведётся?

Финально получилось так:

Цитата:
@echo off
chcp 1251 > nul
set file=file.exe
for %%b in (c d) do (
cd /d %%b:\
for /f "usebackq tokens=1,2* delims= " %%c in (`dir "%file%" /t:c /a:-d /s`) do (
if "%%c%%d"=="Directoryof" (
cd /d "%%e"
) else (
for /f "tokens=1,2,3,4,5,6* delims=.,:, " %%f in ("%%c %%d %%e") do if "%%l"=="%file%" (
call :qwe %%h%%g%%f 1%%i%%j
)
)
)
)
set end=yes
call :qwe
echo %way_fo_install%
rem pause
goto :eof
:qwe
if "%1" GTR "%t1%" (
set "way_fo_install=%cd%\%file%"
set t1=%1
set t2=%2
) else if "%1"=="%t1%" (
if "%2" GTR "%t2%" (
set "way_fo_install=%cd%\%file%"
set t1=%1
set t2=%2
)
)
if defined end echo Y | reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment" /v way_for_install /t reg_sz /d "%way_fo_install:~0,-12%


По какой-то неведомой мне причине, если ставить в самом конце " /f то он заносит их в значение пременной, а вот так вот - обрубдено пашет (правда не встречал ещё папок с пробелами - может там запоёт)

При повторном запуске вопрошает - заменить или нет - применил фокус с echo Y |. Потестю пока...

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

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


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