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

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

Автор: KapralBel
Дата сообщения: 30.05.2007 13:50
saturnatu
If /? | More
Автор: wolf0425
Дата сообщения: 30.05.2007 14:40
saturnatu а для проверки на входжение одной строки в другую
echo %string% | find /i "%substring%" >nul && echo Substring found!
Автор: NIKZZZZ
Дата сообщения: 30.05.2007 17:29
Небольшой вопросик, есть устройство UsbFlashDisk. При попытки его отключить, винды говорят - нельзя, дескать одна из программ использует его. Как узнать, кто же его использует?
Короче, как его принудительно отключить, желательно закончив отложенные записи ?
Аналогичный вопрос, как узнать , кто использует в данный момент данный файл?

Автор: Elroir
Дата сообщения: 30.05.2007 17:34
NIKZZZZ

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

Есть программа Unlocker - она встраивается в интерфейс эксплорера и может показать, кто/что использует файл.
Автор: NIKZZZZ
Дата сообщения: 30.05.2007 17:51
Elroir

Цитата:
Есть программа Unlocker - она встраивается в интерфейс эксплорера

Ну в интерфейс эксплорера как раз и не надо, а вот то что она из командной строки работает - только что узнал!


Автор: igor_andreev
Дата сообщения: 30.05.2007 17:51
wolf0425

Цитата:
а окно, стартующее в 80х25 - УДОБНО. потому что из него ФАР сам очень замечательно разворачиватеся на весь экран автостартующей макрой, подстраиваясь под разрешение
На вкус и цвет фломастеры у всех разные. Мне не нравится на полный экран, обычно 110x40 строк ставлю или 100x34 и "Raster Fonts" не люблю, везде в консольных окнах меняю на "Lucida Console"

Цитата:
и где на него можно сейчас посмотреть?
В окончательно работающем виде его точно у меня сейчас нет, отформатировал наверно вместе с флэшкой за ненадобностью. Ранние тестовые куски сохранились случайно на машине с Win 2000, в разных вариациях, и с использованием сторонних утилит, и с чтением из ини-файла и с переподвыподвертом. [more] Вот кусок установки размера окна Far, размера шрифта. Еще под Win 2000 делал, без использования REG.EXE

Код:
REM Выясняем текущий путь Far.exe

SET "CURRENT_FAR_EXE=%~dp0Far.exe"

REM Выясняем текущую рабочую папку Far

SET "CURRENT_FAR_DIR=%~dp0"

REM Удаляем последний обратный слеш в пути к текущей рабочей папке, не нужен он

SET "CURRENT_FAR_DIR=%CURRENT_FAR_DIR:~0,-1%"

REM Удваиваем в пути к экзешнику Far.exe обратные слеши
REM для записи в файл реестра "%TEMP%\FarInAppPaths.reg"

SET "CURRENT_FAR_EXE_DOUBLESLASHED=%CURRENT_FAR_EXE:\=\\%"

REM Удваиваем в пути к рабочей папке слеши, для записи в файл реестра "%TEMP%\FarInAppPaths.reg"

SET "CURRENT_FAR_DIR_DOUBLESLASHED=%CURRENT_FAR_DIR:\=\\%"

REM Записываем путь и раб. папку Far в "%TEMP%\FarInAppPaths.reg"

(
ECHO.REGEDIT4
ECHO.
ECHO.[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Far.exe]
ECHO.@="%CURRENT_FAR_EXE_DOUBLESLASHED%"
ECHO."Path"^="%CURRENT_FAR_DIR_DOUBLESLASHED%"
)>"%TEMP%\FarInAppPaths.reg"

REM Меняем в пути к экзешнику Far.exe обратные слеши на знак подчеркивания
REM для записи в файл реестра "%TEMP%\FarConsoleWindow.reg"

SET "CURRENT_FAR_EXE_UNDERLINED=%CURRENT_FAR_EXE:\=_%"

REM Записываем путь к экзешнику Far.exe в "%TEMP%\FarConsoleWindow.reg"
REM дабы Far запустился с нужными настройками окна
REM Тут свои dword: надо написать из HKCU\Console, это какой-то из моих
REM вариантов не помню для чего даже, кажется для 1024х768
REM Насчет WindowPosition - на PortableFar у мну стоял CenterFarWindow плагин
(
ECHO REGEDIT4
ECHO.
ECHO [HKEY_CURRENT_USER\Console\%CURRENT_FAR_EXE_UNDERLINED%]
ECHO "ScreenBufferSize"=dword:00280064
ECHO "WindowSize"=dword:00220064
ECHO "WindowPosition"=dword:0x00B000B0
ECHO "FontSize"=dword:000e0008
ECHO "FontFamily"=dword:00000036
ECHO "FontWeight"=dword:00000190
ECHO "FaceName"="Lucida Console"
ECHO "HistoryNoDup"=dword:00000000
ECHO "CursorSize"=dword:0000000a
)>"%TEMP%\FarConsoleWindow.reg"

REM Тут еще FarSettings1.reg и FarSettings2 импортировал ...

REM Импортируем свои настройки в реестр

IF EXIST "%TEMP%\FarInAppPaths.reg" START /WAIT REGEDIT /S "%TEMP%\FarInAppPaths.reg"
IF EXIST "%TEMP%\FarConsoleWindow.reg" START /WAIT REGEDIT /S "%TEMP%\FarConsoleWindow.reg"

REM Чтобы настройки HKCU применились в сей же час...

RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters

REM Удаляем
IF EXIST "%TEMP%\FarInAppPaths.reg" DEL "%TEMP%\FarInAppPaths.reg"
IF EXIST "%TEMP%\FarConsoleWindow.reg" DEL "%TEMP%\FarConsoleWindow.reg"

REM и можно запускать %~dp0Far.exe ...
Автор: NIKZZZZ
Дата сообщения: 30.05.2007 18:33
Elroir

Цитата:
Есть программа Unlocker

"не найден блокирующий дескриптор"
Удалить просишь, а она предлагает отложенное задание создать ...
Автор: Elroir
Дата сообщения: 30.05.2007 18:47
NIKZZZZ
Извиняйте
За что купил - за то продал.
Автор: NIKZZZZ
Дата сообщения: 30.05.2007 19:45
Elroir
Так не к тебе претензии ...
Автор: 01MDM
Дата сообщения: 30.05.2007 21:03
Ковырялся с батником, just for fun, и у меня возникло пара вопросов, на которые никак не могу найти решения.

Вот сам батник, выводит надпись с эффектом "печатающегося текста"

Код:
@ECHO OFF

set a=qwerty
set /a b=0
set /a c=5

setlocal enabledelayedexpansion

for /l %%i in (1,1,6) do (
    if !b! equ 5 (
        echo|echo %%a:~!b!%% >1.tmp
        for /f %%i in ('type 1.tmp') do (
            set d=%%i
            )
        goto _set
        )
    echo|echo %%a:~!b!,-!c!%% >1.tmp
    for /f %%i in ('type 1.tmp') do (
        set d=%%i
        )
    set /a b=!b!+1
    set /a c=!c!-1
    :_set    
    set /p=!d!<nul
    ping -n 1 localhost >nul
    )

del 1.tmp
pause >nul
Автор: Elroir
Дата сообщения: 30.05.2007 21:13
01MDM
1.
Код: set d=echo ^| echo %%%%a:~%%b%%,-%%c%%%%%%
Автор: 01MDM
Дата сообщения: 30.05.2007 21:25
Elroir

Цитата:

1.
set d=echo ^| echo %%%%a:~%%b%%,-%%c%%%%%%


Не получается
Автор: Elroir
Дата сообщения: 30.05.2007 21:31
01MDM
Ты не мог бы писать конкретнее - что не получается?
Как это выглядит?
Автор: 01MDM
Дата сообщения: 30.05.2007 21:44
Вариант с исправлением:


Код:
@ECHO OFF

set a=qwerty
set /a b=0
set /a c=5

setlocal enabledelayedexpansion

for /l %%i in (1,1,6) do (
    if !b! equ 5 (
        set d=echo ^| echo %%%%a:~%%b%%%%%%
        goto _set
        )
    set d=echo ^| echo %%%%a:~%%b%%,-%%c%%%%%%
    set /a b=!b!+1
    set /a c=!c!-1
    :_set    
    set /p=!d!<nul
    ping -n 1 localhost >nul
    )

pause >nul

Автор: Elroir
Дата сообщения: 30.05.2007 22:06
01MDM
Вот - без всяких дополнительных файлов:

Код: @ECHO OFF
set a=qwerty
setlocal enabledelayedexpansion
for /l %%i in (0,1,5) do (
set d=!a:~%%i,1!
    set /p=!d!<nul
ping -n 1 localhost >nul
ping -n 1 localhost >nul
)
pause >nul
Автор: 01MDM
Дата сообщения: 30.05.2007 22:13
Elroir

Мда... Век живи - век учись, и все равно...
Автор: Elroir
Дата сообщения: 30.05.2007 22:18
01MDM

Цитата:
Учиться, учиться у учиться, как завещал...


Кстати, правильный ответ на первый вопрос таков:

Код: set d=!a:~%b%,-%c%!
Автор: vils007
Дата сообщения: 31.05.2007 11:50
Доброе время суток. Задача. Из папки C:\w удалять все файлы и папки кроме С:\w\log и должны остаться файлы и которые были созданы за последний день (сутки не сильно важно хотябы так). Вот такой батник у меня получился
@echo off
xcopy/y/v/e/h/r/d "C:\W\LOG" C:\BAT
echo УСПЕШНО ЗАВЕРШЕНО ПЕРВЫЙ ЭТАП КОПРИОВАНИЯ
pause
Set DelPath=C:\W
Set Ext=*.*
CD "%DelPath%"
For /R %%i In (%Ext%) Do (
Del "%%i")
echo УСПЕШНО ЗАВЕРШЕНО ЭТАП УДАЛЕНИЯ
pause
xcopy/y/v/e/h/r/d C:\BAT "C:\W\LOG"
echo УСПЕШНО ЗАВЕРШЕНО ПОСЛЕДНИЙ ЭТАП
pause
exit

моя проблема в том что я не понял как работает получение даты создания файла в BAT-файлах. и не знаю как получить системную дату. прошу помочь дописать батник. (батники первый день трогать пришлось)
Автор: Elroir
Дата сообщения: 31.05.2007 12:37
vils007

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

Ну и как они на ощупь?

Цитата:
Из папки C:\w удалять все файлы и папки кроме С:\w\log и должны остаться файлы и которые были созданы за последний день

Не совсем понятно - файлы, которые должны остаться (за последний день) - это файлы в С:\w\log? То есть и оттуда надо удалить некоторые файлы?
Автор: tricord
Дата сообщения: 31.05.2007 13:49
Всем привет.
Ежедневно в директорию d:\BackupDB скриптом делается backup базы firebird виде base_DATE.fbk (Например base_20070531.fbk), для того что бы не забивался диск необходимо удалять старые backupы, и оставлять последние 10. Как это можно сделать batником.
Автор: Maza Faka
Дата сообщения: 31.05.2007 14:03
tricord

Код:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir /b /s /o:-d D:\BackupDB\*.fbk') do (
set /a count+=1
if !count! gtr 10 del /q /f "%%a")
Автор: tricord
Дата сообщения: 31.05.2007 14:10
Maza Faka Большое спасибо


Добавлено:
Maza Faka Большое спасибо
Автор: wolf0425
Дата сообщения: 31.05.2007 16:01
tricord, Maza Faka
можно и без отдельного счетчика

for /f "tokens=* skip=10" %%a in ('dir /b /a-d /o-d D:\BackupDB\*.fbk') do del /q /f "%%~a"
Автор: Maza Faka
Дата сообщения: 31.05.2007 17:42
vils007
Скачай утилиту forfiles.exe кинь её в папку WINDOWS и запускай этот код:

Код:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir /b /a:d /s c:\w ^| find /i /v "c:\w\log"') do (
forfiles /p %%a /d -1 /c "cmd /c rd /q @file">nul 2>&1
forfiles /p %%a /d -1 /c "cmd /c del /q /f @file">nul 2>&1)
Автор: chelobey
Дата сообщения: 31.05.2007 21:24
Привет всем. Возможно, такая задача вас заинтересует, а ее решение очень мне поможет.
Заранее спасибо.

Вот в чем загвоздка: при подключении к Интернет посредствам модемного соединения скачивается некоторый неизвестный объем информации, после чего соединение закрывается. Это при положительном результате (т.е. файлы удачно качнулись). Но если скачивание не произошло по причинам недоступности адреса (берем во внимание автоматический выбор адресов из двух десятков) или каких других трудностей?
Как задать условие, при котором бы при подобных обстоятельствах соединение закрывалось?
Есть следующие мысли: 1. слежение за трафиком (что-то вроде «времени простоя соединения» windows) и 2. слежение за состоянием файла, который при каждом подключении должен в идеале обновляться (время изменения, размер).

И еще, сведения обо всех попытках подключения записывались и дописывались бы далее в log.txt с указанием даты и времени.

С подключением и закрытием соединения все ясно - rasdial, что можно сделать с остальным?
Автор: vils007
Дата сообщения: 01.06.2007 01:39
Не совсем понятно - файлы, которые должны остаться (за последний день) - это файлы в С:\w\log? То есть и оттуда надо удалить некоторые файлы?

в папке С:\w\log ни чего не удаляем никогда. А в С:\w удаляем всё что старше одного дня.
Автор: Elroir
Дата сообщения: 01.06.2007 01:57
vils007
Тогда код, который предложил Maza Faka - это именно то, что тебе нужно.
Только четвертая строчка у меня вызывает сомнения. Попробуй с ней - если будут удаляться директории, которые удаляться не должны - убери ее.
Автор: euheny
Дата сообщения: 01.06.2007 02:46
Нужно определить чья видеокарта (nv или ati) стоит на компе.Драйвер не установлен.
Какие идеи ?
Автор: vils007
Дата сообщения: 01.06.2007 03:15
Maza Faka спасибо.

Elroir спасибо.

Этот forfiles.EXE там хронятся какие-то специальные процедуры для работы с файлами?
Автор: Elroir
Дата сообщения: 01.06.2007 04:09
vils007

Цитата:
Этот forfiles.EXE там хронятся какие-то специальные процедуры для работы с файлами?

forfiles - это майкрософтовская утилита для работы с множеством файлов, выделенных по определенному признаку. В частности, эта утилита позволяет очень легко находить (и, соответствено, обрабатывать) файлы/директории по дате изменения - до определенного числа, после, столько-то дней назад и т.д.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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