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

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

Автор: king_stiven
Дата сообщения: 23.11.2008 23:35
zzxx1488

Код: for %%i in (file.txt) do if %%~zi gtr 10 (echo big) ELSE echo small
Автор: AZJIO
Дата сообщения: 23.11.2008 23:39
zzxx1488
для if есть операторы LSS - меньше, GTR - больше.

Автор: LRick
Дата сообщения: 24.11.2008 00:35
Здравствуйте.
У меня проблема с bat-файлом, выполняющим команду на ftp сервере. Исполняется команда SITE REQ с именем файла в качестве параметра. Проблемы есть в том случае, если имя содержит пробелы.

Код: @echo off
set target=filename with spaces
echo OPEN someftp.ru> 1.txt
echo quote SITE REQ "%target%">> 1.txt
echo QUIT>> 1.txt
ftp -s:1.txt -A
Автор: AZJIO
Дата сообщения: 24.11.2008 01:59
Подскажите в такой проблеме:
Сделал батник копирования Photoshop на диск B: (для WinPE), но при копированиии выяснилось, что копируется только часть файлов, то есть из 90 Мб на диске B: оказывается только 50-75 Мб, всегда по разному. Выяснил причину - недостаточно места на диске B:, на самом деле свободно ещё 10 Мб, даже если скопировать все 90 Мб. Если копировать вручную переносом папки - проблема такая же. Решение - копировать по частям. Разделил обьём на 3 чсти и сделал 3 батника, которые выполняются утилиткой installs.exe, но как выяснилось, и она тоже иногда не все файлы копирует, при чём запускает все 3 батника одновременно.
В справке посмотрел батник типа этого:

Цитата:
@echo off
rem COPYIT.BAT копирует все файлы во всех подкаталогах
rem исходного диска или каталога (%1) на другой диск

rem или в другой каталог (%2)

CHCP 1251

xcopy %1 %2 /s /e /h /y

if errorlevel 4 goto lowmemory
if errorlevel 2 goto abort
if errorlevel 0 goto exit

:lowmemory
echo Недостаточно памяти для копирования файлов, задан недопустимый
echo диск или ошибка в синтаксисе командной строки.
pause
goto exit

:abort
echo Нажата комбинация CTRL+C для остановки копирования.
pause
goto exit

:exit

в оригинал добавил "CHCP 1251", ключи " /h /y", "pause" и убрал вопросительные знаки. Далее сделал батник с таким содержанием
Цитата:
copyit "%SYS%\Graphics\Adobe Photoshop CS3" "B:\Adobe Photoshop CS3\"
По крайней мере в нём за счёт паузы я увидел сообщение "Недостаточно места на диске", хотя на диске B было 60 Мб свободно. Как от этого избавится?
Автор: snu
Дата сообщения: 24.11.2008 03:38
заранее сорри если туплю. поискаk не нашел, решил спросить.
есть текстовый файл, в нем в два столбца идут ip адреса и время, нужно добавить тертью колонку в которой каждоу ip будет сопоставленно доменое имя. т.е. по сути требуется для каждого ip выполнить nslookup и записать результат обратно в файл.
возможно сделать это через батник?
Автор: OLEHbKA
Дата сообщения: 24.11.2008 09:45
Здравствуйте, помогите создать bat файл для следующей задачи:
Эффективная архивация изменений в исходных данных.
Т.е. эффективный метод доархивирования данных посредством добавления к архиву только измененной части исходных данных, используя существующие программные средства..
буду очень благодарна..
Автор: Igor_V_Mitichev
Дата сообщения: 24.11.2008 11:13
Elroir

В общем, сейчас на работе зашел я туда проводником. В GUI действительно показываются другие буквы: 2x2-Rocë On.mp3. Но команда dir эту самую "ё" почему-то выводит как "е".

Получается что это косяк консоли что-ли? То есть мне в скриптах уже этот файл вообще нельзя обработать?

Дело в том, что у меня тут подобных файлов, которые dir выдала, а скрипт потом не смог найти, порядка 300 штук. И дело как правило в неразрешенных символах в именах файлов (каталогов).

Например:

C:\>dir /b "d:\share\Общая\СГИП\Общая\Иванова\Задания\Зад. на вып. инж.геолог.-П
одъездная дорога-пер.Московский.doc"
File Not Found

C:\>dir /b "d:\share\Общая\СГИП\Общая\Иванова\Задания\*.Московский.doc"
Зад. на вып. инж.геолог.-Подъездная дорога-пер.Московский.doc
Зад. на вып. инж.топогр. работ-Подъездная дорога-пер.Московский.doc

Или:

C:\>dir /b "d:\share\Общая\ТО\Ильченко\ИНТЕРАКТИВНАЯ КАРТА БРЯНСКА - Подробная к
арта Брянска с домами + интегрированный каталог компаний.htm"
File Not Found

C:\>dir /b "d:\share\Общая\ТО\Ильченко\*компаний.htm"
ИНТЕРАКТИВНАЯ КАРТА БРЯНСКА - Подробная карта Брянска с домами + интегрированный
каталог компаний.htm

или (здесь немножко другой вариант)

C:\>dir /b d:\share\Общая\ТО\Ильченко\ПВХ Профили <ЭКСПРОФ> - Продукция и услуги
- Сибирская система профилей для из ПВХ для изготовления окон, дверей, витражей
и входных групп.htm

The system cannot find the file specified.

C:\>dir /b d:\share\Общая\ТО\Ильченко\*групп.htm
ПВХ Профили <ЭКСПРОФ> - Продукция и услуги - Сибирская система профилей для из П
ВХ для изготовления окон, дверей, витражей и входных групп.htm


Как такие конфликты разруливать? На сколько я понимаю, заставить команду dir выдавать имена файлов в формате 8.3 (с ключами /s и /b) нереально... Фиг знает чего делать...
Автор: lanselotideo1111
Дата сообщения: 24.11.2008 11:46
Товарищи помогите решить такую задачку.

Есть несколько папок вида в каталоге d:\temp:
19-11-08 00
19-11-08 01
19-11-08 02
.................
19-11-08 23
20-11-08 00
20-11-08 01
20-11-08 02
.................
20-11-08 23
.................
30-11-08 00
30-11-08 01
30-11-08 02
.................
30-11-08 23
Все папки содержат файлы.

Необходимо скопировать папки со всеми файлами в каталог, например c:\temp, с заданым условием:
копировать нужно только каталоги за вчерашний день.






Автор: NIKZZZZ
Дата сообщения: 24.11.2008 13:25
Igor_V_Mitichev

Цитата:
На сколько я понимаю, заставить команду dir выдавать имена файлов в формате 8.3 (с ключами /s и /b) нереально...


Код: FOR /F "usebackq delims==" %%i IN (`dir /s /b e:\`) DO @echo %%~sdpnxi
Автор: dex_2005
Дата сообщения: 24.11.2008 14:28
Доброе время суток, Господа!
Требуется ваша помощь. Нужен батник чтоб контролировал соединение в интернетом, идея такова!
значит пингуем IP какого нить интернет сервиса например того же ya.ru если пинг присутствует записываем дату и время + строку Интернет есть =)(надо чтоб это действие писалось в лог файл всего лишь один раз, а если инет вдруг пропадет тоже действие запись в лог + строка Инет отсутствует (надо чтоб и это сообщение записалось один раз)и все сначала! =)
Автор: Elroir
Дата сообщения: 24.11.2008 15:28
dex_2005
Ответил в теме "Командная строка, батники, сценарии (bat, cmd) 2"


Добавлено:
Igor_V_Mitichev
Попробуй запустить команду "chcp 1251" до запуска "dir"-a.
Автор: Igor_V_Mitichev
Дата сообщения: 24.11.2008 16:19
Elroir

Цитата:
Попробуй запустить команду "chcp 1251" до запуска "dir"-a


Ты знаешь... действительно, ситуация изменилась кардинально
Автор: N1ke
Дата сообщения: 24.11.2008 17:13
есть прога, выдаёт при запуске разные циферкобуковки. Грубо говоря получаем на выходе

1111

нужно получить

блаблабла=1111

можно это сделать без перегонов вывода во временный файл?
Автор: mail1ra
Дата сообщения: 24.11.2008 17:46
Добрый день!

Подскажите пожалуйста как сделать ввод одного символа, без нажатия клавишы Enter

SET /P input = Введите значение

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

Спасибо
Автор: Elroir
Дата сообщения: 24.11.2008 19:41
N1ke

Код:
@echo off
for /f "tokens=*" %%a in ('proga.exe') do set "blablabla=%%a"
Автор: batniki
Дата сообщения: 24.11.2008 23:31
Помогите реализовать такую задачу, делаю для рескью диска винды, сценарий-связку updater/shell, fakelicense - для защиты дистрибутива нужен след. код (можно частями, буду очень благодарен за лаконичность кода и вашу помощь в написании):

Есть .txt, в нем список, на каждой строке дата релиза bios'а (пример строки: 30060126000000.000000+000)

1.    нужно найти в файле строчку соответствующую %bios%

Код: for /f "tokens=*" %%i in ('wmic bios get releasedate') do set bios=%%i
Автор: 01MDM
Дата сообщения: 25.11.2008 04:05
batniki

Цитата:
2. если такой строчки нет, то с помощью reg брать значение параметра InstallDate в ветке KEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion и переводить в десятичный формат, полученное число прибавить к 01.01.1970 = число даты установки ОС.

А обязателен такой геморой с прибавлением секунд?
Не проще взять из:

Код:
netsh diag show os /v | findstr /i "installdate"
Автор: OLEHbKA
Дата сообщения: 25.11.2008 09:39
Пожалуйста, помогите мне..
Автор: dex_2005
Дата сообщения: 25.11.2008 11:01
Elroir

Цитата:
dex_2005
Ответил в теме "Командная строка, батники, сценарии (bat, cmd) 2"

Спасибо большое ща проверю =)

Добавлено:

Цитата:
Доброе время суток, Господа!
Требуется ваша помощь. Нужен батник чтоб контролировал соединение в интернетом, идея такова!
значит пингуем IP какого нить интернет сервиса например того же ya.ru если пинг присутствует записываем дату и время + строку Интернет есть =)(надо чтоб это действие писалось в лог файл всего лишь один раз, а если инет вдруг пропадет тоже действие запись в лог + строка Инет отсутствует (надо чтоб и это сообщение записалось один раз)и все сначала! =)

Благодаря Elroir, данная задача решена! Батч файл полностью функционален под XP, под другим пока еще не тестил!

Код: @echo off
setlocal
:loop
ping ya.ru | find "TTL=">nul
if errorlevel 1 (
if not defined noConnection (
set "noConnection=true"
echo %date% %time% Disconnected>>log.txt
)
) else (
if defined noConnection (
set "noConnection="
echo %date% %time% Connected>>log.txt
)
)
goto loop
Автор: Badim
Дата сообщения: 25.11.2008 13:47
Можно ли узнать время последнего доступа к файлу?

пример:
Set f_stat=%f_Time:~0,5%
получим время последней модификации
а вот, чтобы вермя последнего доступа?
Автор: batniki
Дата сообщения: 25.11.2008 15:13
01MDM,
это был единственный, нелепый попавшийся способ, найденный мной…
netsh diag show os /v | findstr /i "installdate" — спасибо, конечно удобнее, но как сравнить полученную дату с текущей и проверить прошли ли указанные дни с момента установки?
Автор: ruslanx3m
Дата сообщения: 25.11.2008 15:50
Как мне определить "startup folder" из bat-ника ? я зделал так :

for /f "tokens=2*" %%i in ('reg query "hkcu\software\microsoft\windows\currentversion\explorer\shell folders" /v ;Startup ^|find /i "startup"') do @set "startfolder=%%j"
echo %startfolder%

но проблема что он на руских winxp не выводит правельно путь ,типа C:\Documents and Settings\ufikjed764\reggbshhjjgh\ggfdgbt ,нужен универсальный батник который выводил правельно путь
и на рус и на eng (на всех виндовсах ) провельно путь ?! Sorry если есть ошибки..

Автор: Nagual
Дата сообщения: 25.11.2008 16:07
ruslanx3m
есть такая вещь, как кодировка
для командных сценариев windows-NT обычно она OEM-866
поэтому сохрани код в эту кодировку или используй в коде переопределение кодировки предшествующей
командой chcp 1251>nul, тогда код может быть написан в кодировке ANSI (windows-1251)
тема изжевана просто донельзя
Автор: mouser
Дата сообщения: 26.11.2008 09:40
Добрый ...
как сделать что если папка сужествует то к ней прибавить _1, а если существует _1 сделать _2 и т.д.

if exist %date% mkdir %date%_1
if exist %date% mkdir %date%_2
и т.д.

УСЛОВИЕ: батник запускается каждый раз по новому
Автор: 01MDM
Дата сообщения: 26.11.2008 09:52
mouser

Код:
@echo off
if not exist %date% md %date% && goto:eof
if not exist %date%_1 md %date%_1 && goto:eof
for /f "tokens=2 delims=_" %%i in ('dir /b /ad %date%_*') do set num=%%i
set /a num+=1
md %date%_%num%
Автор: tdr1225
Дата сообщения: 26.11.2008 11:23
01MDM, mouser
В приведенном выше коде - интересный эффект: насоздавали папки х_1, х_2, ... х_5. Если удалить х_2, в след. раз будет создана х_6. Если же удалить х_1, то в след. раз будет создана х_1, а уж затем х_6. Лишняя вторая проверка.
И ошибочка: после х_10 ничего не создается.
Автор: mouser
Дата сообщения: 26.11.2008 12:15
tdr1225
01MDM

хм... а в чём загвоздка того что он только до 10 считает ???
Автор: igor_andreev
Дата сообщения: 26.11.2008 12:51

Цитата:
В приведенном выше коде - интересный эффект: насоздавали папки х_1, х_2, ... х_5. Если удалить х_2, в след. раз будет создана х_6. Если же удалить х_1, то в след. раз будет создана х_1, а уж затем х_6. Лишняя вторая проверка.
И ошибочка: после х_10 ничего не создается.

До тыщщи достаточно?

Код:
@ECHO OFF

SET "DIR=%DATE%"

:MAKE_DIR
IF EXIST "%DIR%"\ (
FOR /L %%A IN (1,1,1000) DO (
IF NOT EXIST "%DIR%_%%A"\ (
SET "DIR=%DIR%_%%A"
GOTO MAKE_DIR
)
)
)

MD %DIR%
Автор: Freethinker23ert
Дата сообщения: 26.11.2008 20:39
Добрый день
Подскажите пожалуйста как написать bat файл, который бы удалял в определенной папке все файлы опеределенного расширения, у которых дата меньше текущей системной на неделю
Автор: king_stiven
Дата сообщения: 26.11.2008 20:51
Freethinker23ert
А в шапку посмотреть?
Работа с текстом, датой, и файлами » [?]

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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