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

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

Автор: NIKZZZZ
Дата сообщения: 16.09.2010 12:28
SLIDER999

Цитата:
Мне нужно их перевести в верхний регистр.

Не проще ли использовать консольную утилиту FileCase ?
Автор: SLIDER999
Дата сообщения: 16.09.2010 12:39
NIKZZZZ
конечно проще! Огромное спасибо
Автор: Grafus
Дата сообщения: 16.09.2010 12:47
NIKZZZZ
СПС
Автор: king_stiven
Дата сообщения: 16.09.2010 13:03
Для разовой операции перевода в верхний или нижний регистр Тотал командер
Автор: lorents
Дата сообщения: 16.09.2010 17:21
Добрый день!
Помогите, пожалуйста, решить следующую проблему:
У меня есть текстовой документ, и там есть строка

Цитата:
Block boundaries: 1443e,1d7bf,45254,51131 (5 blocks)

Как можно найти значение, то что в скобках, интересует только число?
и еще один вопрос, как можно из переменной отнять значение 2, и сделать такое условие, если число положительное, то выполнить определенное действие.
Автор: bomzzz
Дата сообщения: 16.09.2010 17:37
yurkesha
тогда надо создать в рабочей папке пустую папку, проверив что такой не существует, потом сменить рабочую дикреторию на нее, переевсти все что надо в верхний регистр и стереть папку

Добавлено:
да нет я вижу ты как то решил этот вопрос. чета не врублюсь по чему ты обрезал

Добавлено:
а всё понятно
Автор: Karrakurt
Дата сообщения: 16.09.2010 17:42
Здравствуйте уважаемые!
Есть задачка такого плана:
имеется каталог с подкаталогами
необходимо упаковать папки с приблизительно определенным размером (например не более 1Гб)
упаковщик особенный, разбиение по размерам не имеет
необходимо вычислить размер папки до упаковки

пример:
имеется папка "текущая", в ней под папки 1, 2, 3, 4.
скрипт сканит папку 1 -) проверяет размер, если меньше 1Гб копирует во временную папку -) идет дальше, папка 2 не больше 1Гб, но вместе с папкой 1 больше на, напишем 100 Мб, не страшно -) запускаем архивацию из временной папки -) дополнительные манипуляции с созданным архивом -) очистка временной папки.
далее папка 3 больше 1Гб -) заходит в папку и сканит первую подпапку, ну и дальше как было описано выше.
обязательное условие сохранение вложенности каталогов.
возможно ли такое на чистом бате?
я смысл работы понимаю, а как реализовать не соображу. вроде как надо написать один цикл и рекурсивно вызывать его, типа:
for /d %%a in (%1) do (DIR %%a /s /n | ?findstring?)
размер папки можно же узнать из команды дир отфильтровав вывод?

в общем как-то так, есть варианты, предложения?
Автор: bomzzz
Дата сообщения: 16.09.2010 17:45
Karrakurt

страниц десять назад отмотай, так как раз с размера делали батник. вот только фсутил размеры папко показывает не знаю

Добавлено:
ты смотри сколько написькать уже успели, если не сказать... от этого поста и выше почитай
http://forum.ru-board.com/topic.cgi?forum=62&topic=19668&start=3920#9
Автор: faithful
Дата сообщения: 16.09.2010 18:47
lorents

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




Код: @echo off
cls

set str=Block boundaries: 1443e,1d7bf,45254,51131 (5 blocks)

for /f "tokens=4 delims=( " %%d in ('set str') do set /a digit=%%d
echo.%digit%

set /a digit-=2
echo.%digit%
Автор: bomzzz
Дата сообщения: 16.09.2010 18:50
lorents

Цитата:

ECHO OFF
COLOR 9F
CLS
set string=Block boundaries: 1443e,1d7bf,45254,51131 (5 blocks)
for /f "delims=( tokens=2" %%I in ("%string%") do set string=%%I
echo %string:~0,1%
pause
Автор: lorents
Дата сообщения: 16.09.2010 19:00
faithful,bomzzz Спасибо, а в чем разница обоих кодов?

И как делать проверку, если полученное число положительное, то выполнить определенное действие?
Автор: bomzzz
Дата сообщения: 16.09.2010 19:07
да мне лень смотреть как там сделано.
про проверку я не дочитал. отнять сравнить

Добавлено:

set string=%string:~0,1%
set /a string=%string%-2
if %string% LSS 0 echo OK

Добавлено:
а число всегда однозначное???
Автор: faithful
Дата сообщения: 16.09.2010 19:14
lorents

Цитата:
а в чем разница обоих кодов?

В том что я использую в качестве разделителей два символа : "(" и " ", поэтому я всегда получу чистое число, сколько бы знаков в нем не было.
Автор: bomzzz
Дата сообщения: 16.09.2010 19:18

Цитата:

ECHO OFF
COLOR 9F
CLS
set string=Block boundaries: 1443e,1d7bf,45254,51131 (5 blocks)
for /f "delims=( tokens=2" %%I in ("%string%") do set string=%%I
echo %string:~0,-7%
set string=%string:~0,-7%
set /a string=%string%-2
if %string% LSS 0 echo OK
pause
Автор: lorents
Дата сообщения: 16.09.2010 20:08
bomzzz
Спасибо, вроде все работает. Только, по моему, мне нужен не LSS, а GTR. А на счет проверки хорошо придумал.
Автор: bomzzz
Дата сообщения: 16.09.2010 20:10
да чет тута придумывать. может не сработать если в случае 1 пишет не blocks, а block тогда подставь строку из батника faithful
Автор: lorents
Дата сообщения: 16.09.2010 20:31
bomzzz
точно не подумал.

faithful
спасибо, воспользуюсь твоим кодом.
Автор: LunQ
Дата сообщения: 17.09.2010 12:58
Вопросик к программистам.
Можно ли батником удалить слово Cом из файла Temp.txt (строка начинается с этого слова)?
Автор: andrew1692
Дата сообщения: 17.09.2010 13:37
Подскажите как в батнике прописать проверку ключа реестра и последущее выполнение команды.
Например, если значения ключа реестра 100, выполнится одна команда, а если 200 то другая
Автор: res2001
Дата сообщения: 17.09.2010 15:05
andrew1692
В forе парсить ответ команды reg query.

LunQ
Можно.
Или перебором в цикле и вылавливанием таких строк, или воспользоваться утилитой sed.
Автор: LunQ
Дата сообщения: 17.09.2010 15:20
res2001

Цитата:
Или перебором в цикле и вылавливанием таких строк

А как этот код выглядит? (я не программист)
Автор: res2001
Дата сообщения: 17.09.2010 15:46
LunQ

Код: @echo off
SetLocal EnableDelayedExpansion
for /f "delims=" %%a in (file.txt) do (
set "tt=%%a"
if "!tt:~0,3!" equ "Cом" (>>file_new.txt echo.!tt:~3!) else >>file_new.txt echo.!tt!
)
Автор: LunQ
Дата сообщения: 17.09.2010 16:05
res2001
Спасибо!!!
Слово по английски, только из шести букв, но в этом я разобрался
Автор: andrew1692
Дата сообщения: 17.09.2010 19:14
res2001

Цитата:
andrew1692
В forе парсить ответ команды reg query.

можно подробнее, а то я не эксперт в батниках
Автор: bomzzz
Дата сообщения: 17.09.2010 19:25
andrew1692

Цитата:

ECHO OFF
COLOR 9F
CLS
FOR /F "SKIP=4 delims=*" %%I IN ('REG QUERY HKCU\Software\KMPlayer\KMP2.0\OptionArea /v InstallPath') DO SET KMPPath=%%I
SET KMPPath=%KMPPath:~23%
SET KMPPath=%KMPPath:~0,-12%
ECHO %KMPPath%
pause



Добавлено:

Цитата:

ECHO OFF
COLOR 9F
CLS
REM ****DOWNLOAD MASTER*****
REG QUERY "HKCU\Software\2VG\Download Master" /v InstallPath>nul
IF ERRORLEVEL 1 GOTO NEXTDM

FOR /F "SKIP=4 delims=*" %%I IN ('REG QUERY "HKCU\Software\2VG\Download Master" /v DefaultSaveFolder') DO SET DMPath=%%I
SET DMPath=%DMPath:~29%
ECHO %DMPath%

:NEXTDM
pause
Автор: andrew1692
Дата сообщения: 17.09.2010 19:57
bomzzz
можно проще, говорю же что я в этом дерево и в нете за 3 часа ничего не нашел
Автор: bomzzz
Дата сообщения: 17.09.2010 20:21
куда проще, ты даже ключ не привел
Автор: prrr
Дата сообщения: 17.09.2010 20:32
del
промазал с темой
Автор: andrew1692
Дата сообщения: 17.09.2010 20:36
bomzzz
цель такая, проверить через реестр текущую версию ОС
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion ключ CurrentVersion
если в нем 5.1 надо запустить 1.exe, а если 6.1 то 2.exe
Автор: bomzzz
Дата сообщения: 17.09.2010 20:43

Цитата:

ECHO OFF
COLOR 9F
CLS
FOR /F "SKIP=4 delims=*" %%I IN ('REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion') DO SET WVersion=%%I
echo %WVersion:~26%
SET WVersion=%WVersion:~26,29%
if %WVersion%==5.1 (
1.exe
goto :eof
)
if %WVersion%==6.1 (
2.exe
goto :eof
)
echo UNKNOWN VERSION
pause

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Windows 7 Starter


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