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

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

Автор: wolf0425
Дата сообщения: 11.06.2010 14:32

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

генерацию файлов, если уж вписывать в сам батник, лучше писать [more=так:]

Код: :generate_console
1>%source% (
echo using System;
echo.
echo class MainClass
echo {
echo public static int Main(string[] args)
echo {
echo return 0;
echo }
echo }
)
1>%schema% (
echo ^<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"^>
echo ^<ItemGroup^>
echo ^<Compile Include="project.cs" /^>
echo ^</ItemGroup^>
echo ^<Target Name="Build" Inputs="@(Compile)" Outputs="app.exe"^>
echo ^<Csc OutputAssembly="app.exe" Sources="@(Compile)" TargetType="exe" /^>
echo ^</Target^>
echo ^</Project^>
)
echo Done.
goto:end

:winform
goto:validate
:generate_winform
1>%source% (
echo using System;
echo using System.Drawing;>
echo using System.Windows.Forms;>
echo.>
echo public class frmMain:Form>
echo {>
echo public frmMain()>
echo {>
echo this.Text = "Form1";>
echo this.Size = new Size(300, 300);>
echo this.CenterToScreen();>
echo.>
echo InitializeComponent();>
echo }>
echo.>
echo protected override void Dispose(bool disposing)>
echo {>
echo if (disposing)>
echo {>
echo if (components != null)>
echo {>
echo components.Dispose();>
echo }>
echo base.Dispose(disposing);>
echo }>
echo }>
echo.>
echo private System.ComponentModel.IContainer components = null;>
echo.>
echo private void InitializeComponent()>
echo {>
echo }>
echo.>
echo [STAThread]>
echo public static int Main(string[] args)>
echo {>
echo Application.Run(new frmMain());>
echo return 0;>
echo }>
echo }>
)
1>%schema% (
echo ^<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"^>
echo ^<ItemGroup^>
echo ^<Compile Include="project.cs" /^>
echo ^</ItemGroup^>
echo ^<Target Name="Build" Inputs="@(Compile)" Outputs="app.exe"^>
echo ^<Csc OutputAssembly="app.exe" Sources="@(Compile)" TargetType="winexe" /^>
echo ^</Target^>
echo ^</Project^>
)
echo Done.
goto:end
Автор: res2001
Дата сообщения: 11.06.2010 15:11
ComradG

Цитата:
В никсах ест такая тулза, называется touch, она меняет метки времени.
Touch for windows - думаю это то что надо.
Автор: us0r
Дата сообщения: 11.06.2010 15:52
Mark_Titov
Рульнай шедулер- nncron. Язык помощнее да и вообще- православен он.
Качай nncron, а с задачамите уже помогут))) И код куда хошь спрячешь, и удобнее им задачи твои исполнять...
Батнеги тоже хороши, но масштаб может быть мелковат)))
Автор: wolf0425
Дата сообщения: 11.06.2010 16:00

Цитата:

Код: Знаю - используй шаблоны и будут тебе итоговые файлы с временем и датой шаблона.
Zum teufel! Вопрос был не о шаблонах. В никсах ест такая тулза, называется touch, она меняет метки времени. В Win2k8 есть что-то подобное, а вот как средствами самой системы (XP и выше) проштамповать файло заново, похоже этим вопросом еще никто не задавался.
Автор: Mark_Titov
Дата сообщения: 11.06.2010 16:55

Цитата:
но масштаб может быть мелковат)))

Что имеешь в виду?
Автор: WesternLight
Дата сообщения: 11.06.2010 18:58

Цитата:
наверно потому что без компиляции у тебя действуют настройки из ветки HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe - ты их отдельно изменял, а при запуске из эксплорера скомпилированного - настройки будут из HKEY_CURRENT_USER\Console\имяпрограммы.exe

wolf0425, твоими подсказками, код, который будет в начале всех моих батников


Цитата:
@echo off
chcp 1251>nul

reg.exe query "HKCU\Console" /v FontSize|find "REG_DWORD    0x100000">nul
if %errorlevel%==1 (
reg.exe add "HKCU\Console" /v FontSize /t REG_DWORD /d 1048576 /f>nul
)

reg.exe query "HKCU\Console" /v FontFamily|find "REG_DWORD    0x36">nul
if %errorlevel%==1 (
reg.exe add "HKCU\Console" /v FontFamily /t REG_DWORD /d 54 /f>nul
)

reg.exe query "HKCU\Console" /v FontWeight|find "REG_DWORD    0x190">nul
if %errorlevel%==1 (
reg.exe add "HKCU\Console" /v FontWeight /t REG_DWORD /d 400 /f>nul
)

reg.exe query "HKCU\Console" /v FaceName|find "Lucida Console">nul
if %errorlevel%==1 (
reg.exe add "HKCU\Console" /v FaceName /t REG_SZ /d "Lucida Console" /f>nul
)


О, да, теперь все батники в 1251 и работают без кракозябр на любом компе, ура! Предлагаю добавить в шапку, вот если бы мне кто сказал сразу: "добавь себе этот код в начало и не парь мозг" жить мне стало бы легче.
Автор: wolf0425
Дата сообщения: 11.06.2010 20:06

Цитата:
wolf0425, твоими подсказками, код, который будет в начале всех моих батников
к тому моменту когда батник доходит до этого кода - консоль уже открыта, так что в ней то ничего не поменяется... или поменяется?
т.е. перезапустить такой батник увидев кракозябры - поможет (если в настройки руками не лазил). и следующие батники будут пучком.
а вот с теми что ранее как-то настраивались - ничего уже не поменяется, только если тереть.

наверно я маньяк скобконенависник, но проверки я бы переписал в 4 строки:

Код: reg.exe query "HKCU\Console" /v FontSize | 1>nul find "REG_DWORD 0x100000" || 1>nul reg.exe add "HKCU\Console" /v FontSize /t REG_DWORD /d 1048576 /f
reg.exe query "HKCU\Console" /v FontFamily | 1>nul find "REG_DWORD 0x36" || 1>nul reg.exe add "HKCU\Console" /v FontFamily /t REG_DWORD /d 54 /f
reg.exe query "HKCU\Console" /v FontWeight | 1>nul find "REG_DWORD 0x190" || 1>nul reg.exe add "HKCU\Console" /v FontWeight /t REG_DWORD /d 400 /f
reg.exe query "HKCU\Console" /v FaceName | 1>nul find "Lucida Console" || 1>nul reg.exe add "HKCU\Console" /v FaceName /t REG_SZ /d "Lucida Console" /f
Автор: Mark_Titov
Дата сообщения: 11.06.2010 20:19
...Люди кто знает такой прикол?
В самом батнике на экране пишет -

Код: C:\Documents and Settings\admin\Desktop\Services v3.0>echo off
Автор: wolf0425
Дата сообщения: 11.06.2010 20:24

Цитата:
Но все равно пишет путь папки от куда запустился батник.
В чем прикол?
ну наверно в батнике есть какая-то команда, которая это пишет
кто ж тебе доктор - выключить подавление эха и самому посмотреть после какой конкретно строки кода это пишется на экране - не судьба совсем? или у тебя и на батник состоящий из одной команды @echo off такое пишет?
тогда расскажи что пишет set comspec
Автор: Mark_Titov
Дата сообщения: 11.06.2010 20:25

Цитата:
ну наверно в батнике есть какая-то команда, которая это пишет

...прикалываешься. А серьезно?

Добавлено:
...Причем он эту строку дублирует в самом начале батника и в самом конце его.

Добавлено:
ComSpec=C:\WINDOWS\system32\cmd.exe
Автор: wolf0425
Дата сообщения: 11.06.2010 21:07

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

компспек дефолтовый, т.е. извраты надо искать в коде...
Автор: Mark_Titov
Дата сообщения: 11.06.2010 21:20

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

...Это не первый раз такое, не могу понять в чем дело, бывает один и тот же код в двух батниках - но один выдает такую лабуду а другой нет. Хрень какая-то...
Беру по кускам копирую в чистый лист - нормально. В чем прикол, не догоняю, но бесит не по детски...
А код я смотрел - нормальный, я копированием вставил кусок кода :htm приведенный на предыдущей по-моему странице и все... Причем с начало все ок было, а потом такая херь...
Автор: WesternLight
Дата сообщения: 11.06.2010 22:16

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

Нет, не поменяется, а нужно... Т.к. все на компах будет происходить само по себе, доступа туда не будет, а еще батник запускается заданием с определенной периодичностью, т.е. у меня первый лог весь в кракозябрах... Ну, что ж, придумаю что-нить
Автор: wolf0425
Дата сообщения: 12.06.2010 00:04

Цитата:
Нет, не поменяется, а нужно...
так как на старте проверяешь - можно просто после того как отдетектил что не люсида и поменял настройки запустить стартом %~f0, а текущую копию батника - закрыть. кривовато, но сработает же. кто те окна считает
Автор: lorents
Дата сообщения: 12.06.2010 00:47
Как можно сделать чтобы при drag and drop, файлы копировались в определенную папку

Код: @ECHO OFF
ENDLOCAL
CD /D %~dp0
SET "POINTER=1"

:M1
IF NOT "%~1"=="" (IF EXIST "%~1\*" (ECHO %POINTER% папка "%~1") ELSE (ECHO %POINTER% файл "%~1"))
SET /a "POINTER+=1"
SHIFT
IF NOT "%~1"=="" GOTO M1

ENDLOCAL
Автор: Mark_Titov
Дата сообщения: 12.06.2010 06:21

Цитата:
т.е. извраты надо искать в коде...

...Мдааа, походу твоя правда.
Вот из-за этого кода портачит-

Код: Echo >> c:\subject.txt
Echo "System"> c:\subject.txt
Call c:\"Automatic post system module".exe
Автор: Den13V
Дата сообщения: 12.06.2010 10:53
Ребят, Всем привет!!!

Подскажите, может кто знает, как в cmd Win7Ult добавить второй основной шлюз для сетей ipv4?

Пролапатил весь netsh, для второго осн. шлюза ничего не нашел.

код для общих настр. сети ipv4:


Код: netsh interface ipv4 set address name=Den13V source=static address=192.168.8.154 mask=255.255.255.0 gateway=192.168.8.10 gwmetric=0

netsh interface ipv4 set dnsserver name=Den13V source=static address=192.168.8.10
Автор: obla4ko4240019
Дата сообщения: 12.06.2010 12:05
ребят, удаляю вшитые дрова вот аткой командой

Код: for /R "c:\windows\inf\" %%a in (oem*.inf) do dpinst.exe /U "%%a" /S /D
Автор: WesternLight
Дата сообщения: 12.06.2010 12:17

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

что-то не работает, да, кажется так и не должно...
[more]@echo off

chcp 1251>nul

set point=begin

reg.exe query "HKCU\Console" /v FontSize|find "REG_DWORD    0x100000">nul

if %errorlevel%==1 (
reg.exe add "HKCU\Console" /v FontSize /t REG_DWORD /d 1048576 /f>nul
set point=
)

reg.exe query "HKCU\Console" /v FontFamily|find "REG_DWORD    0x36">nul

if %errorlevel%==1 (
reg.exe add "HKCU\Console" /v FontFamily /t REG_DWORD /d 54 /f>nul
set point=
)

reg.exe query "HKCU\Console" /v FontWeight|find "REG_DWORD    0x190">nul

if %errorlevel%==1 (
reg.exe add "HKCU\Console" /v FontWeight /t REG_DWORD /d 400 /f>nul
set point=
)

reg.exe query "HKCU\Console" /v FaceName|find "Lucida Console">nul

if %errorlevel%==1 (
reg.exe add "HKCU\Console" /v FaceName /t REG_SZ /d "Lucida Console" /f>nul
set point=
)

goto %point%

start "%~f0"
exit


:begin
echo Кракозябрам нет!

pause
exit[/more]
Автор: wolf0425
Дата сообщения: 12.06.2010 12:24
WesternLight
Цитата:
что-то не работает, да, кажется так и не должно...

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

Код: @echo off

chcp 1251>nul

reg.exe query "HKCU\Console" /v FaceName|find "Lucida Console">nul || (
    1>nul reg.exe add "HKCU\Console" /v FontSize /t REG_DWORD /d 1048576 /f
    1>nul reg.exe add "HKCU\Console" /v FontFamily /t REG_DWORD /d 54 /f
    1>nul reg.exe add "HKCU\Console" /v FontWeight /t REG_DWORD /d 400 /f
    1>nul reg.exe add "HKCU\Console" /v FaceName /t REG_SZ /d "Lucida Console" /f
    start "" "%~f0" %*
    exit
)

:begin
echo Кракозябрам нет!

pause
exit
Автор: yurkesha
Дата сообщения: 12.06.2010 12:30
lorents
Ну во первых я напартачил - вначале должно быть естественно SETLOCAL...
А копирование если именно только файлов, а папки пропускать делается [MORE=так]
Код: @ECHO OFF
SETLOCAL
CD /D %~dp0
SET "MYDIR=c:\11111\"
SET "POINTER=1"

:M1
IF NOT "%~1"=="" (IF EXIST "%~1\*" (ECHO %POINTER% папка "%~1") ELSE (COPY "%~1" "%MYDIR%"))
SET /a "POINTER+=1"
SHIFT
IF NOT "%~1"=="" GOTO M1
ENDLOCAL
Автор: res2001
Дата сообщения: 12.06.2010 12:31
Den13V
попробуй route
Автор: Den13V
Дата сообщения: 12.06.2010 12:45
res2001

Подскажи каким образом, просмотрел help по route, кроме добавления маршрута, больше ничего не нашел похожего.

попробовал ввести


Код: route add 192.168.5.11 mask 255.255.255.0 192.168.8.154
Автор: res2001
Дата сообщения: 12.06.2010 12:58
Den13V
Для маршрута по умолчанию будет так:
route add 0.0.0.0 mask 0.0.0.0 192.168.5.11 metric 40

Метрику задавай обязательно, иначе не знаю как IP будет понимать через какой шлюз ему отправлять пакеты. Посмотри текущую метрику маршрута по умолчанию (обычно 20) и задай большую.
Автор: lorents
Дата сообщения: 12.06.2010 13:00
yurkesha
у меня при запуске батник выручается, ни каких ошибок не выдает
Автор: res2001
Дата сообщения: 12.06.2010 13:01
Den13V
если хочешь чтоб маршрут был статическим, т.е. остался после перезагрузки виндов добавь параметр -p
Автор: Den13V
Дата сообщения: 12.06.2010 13:22
res2001

за параметр -p я знаю спасибо тебе, вроде получилось.

Автор: WesternLight
Дата сообщения: 12.06.2010 13:22

Цитата:
да намутил ты что-то лишнего.
как-то так должно быть, проверяй:

что-то не работает...
Автор: mugil_cephalus
Дата сообщения: 12.06.2010 13:24
obla4ko4240019
посм. , может там есть инфа - http://oszone.net/3827
Добавлено:
а нет у тебя цикл неверно составлен
Автор: obla4ko4240019
Дата сообщения: 12.06.2010 13:35
mugil_cephalus

Код: for /R "c:\windows\inf\" %%a in (oem*.inf) do dpinst.exe /U "%%a" /S /D

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

Предыдущая тема: XP не видит второй раздел на съемном USB-HDD


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