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

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

Автор: Serhiy123
Дата сообщения: 20.03.2009 23:35
king_stiven - спасибо за freedisk!

Автор: batniki
Дата сообщения: 21.03.2009 16:23
Здравствуйте, помогите, пожалуйста!
Нужно написать bat, который лежит в корне всех директорий, чтобы пробегался по всем директориям в поисках .txt файлов и выполнял для каждого из них команду
CB.exe – rendering имя_найденого_файла.txt
Автор: king_stiven
Дата сообщения: 21.03.2009 17:33
batniki

Код: for /f "tokens=*" %%c in ('dir *.txt /b /s /a:-d') do echo "%%c"
Автор: batniki
Дата сообщения: 21.03.2009 17:52
king_stiven, спасибо, то что нужно!
Автор: a500a
Дата сообщения: 21.03.2009 18:02
Здравствуйте!

Написал скрипт:

Код: @echo off
for /f "tokens=2 skip=2 delims=:" %%a in ('ipconfig /all ^| findstr "IP-*"') do (if not defined myip set myip=%%a)
echo http://%myip%>myip.js
Автор: batniki
Дата сообщения: 21.03.2009 18:08
a500a,
http://forum.ru-board.com/topic.cgi?forum=62&topic=15343&start=100#10
Автор: Serhiy123
Дата сообщения: 21.03.2009 18:52
a500a


Код:
echo http://%myip:~1%>myip.js
Автор: a500a
Дата сообщения: 21.03.2009 18:56
Serhiy123

Цитата:
a500a


Код:
echo http://%myip:~1%>myip.js


Работает!
Спасибо! Всё получилось кратко и как надо
Автор: batniki
Дата сообщения: 21.03.2009 19:15
Помогите нужно сменить .txt2 расширение всех файлов на .txt

for /f "tokens=*" %%c in ('dir *.txt2 /b /s /a:-d') do ren "%%c" ....
Автор: 01MDM
Дата сообщения: 21.03.2009 19:23
batniki

Код:
@echo off
for /f "tokens=*" %%i in ('dir /b /s *.txt2') do ren "%%~fi" "%%~ni.txt"
Автор: MIHMIH007
Дата сообщения: 22.03.2009 12:02
скажите пожалуйста можно ли сделать батник следующего вида:
К примеру есть файл app.exe он запускается с параметром 1
Нпаример:
start app.exe 1

Я хочу поменять расширение на dat получится app.dat но тогда естественно он не запустится как exe... Можно ли сделать батник который бы понимал что app.dat это app.exe ?
Автор: batniki
Дата сообщения: 23.03.2009 00:39
01MDM, спасибо!

Еще вопрос:
Как пройтись по всем папкам найти .txt файлы, посчитать количество строк всех этих файлов, кроме строк начинающихся на # и //
Автор: Serhiy123
Дата сообщения: 23.03.2009 03:35
Помогите, плз, вот с каким вопросом.
Почему вот такая конструкция работает (выдает количество свободного места на текущем диске):

Код:
for /f "tokens=3" %%J in ('dir %~d0') do set free_space=%%J
echo %free_space%
Автор: GGS
Дата сообщения: 23.03.2009 09:25
Удалено автором. Ошибся.
Автор: Elroir
Дата сообщения: 23.03.2009 10:09
Serhiy123

Цитата:
Почему вот такая конструкция работает ..., а будучи заключенной в оператор IF перестает работать:



Цитата:
В обычном случае, чтобы узнать значение переменной окружения, надо воспользоваться конструкцией %переменная%. Однако, если значение переменной меняется внутри цикла и читается там же, то для корректной работы батника, нужно использовать команду setlocal enabledelayedexpansion и вместо символа "%", использовать символ "!". Иначе, значение переменной в цикле будет всегда одним и тем же - таким, каким было до входа в цикл.


Это справедливо и для for-a, и для скобок if-a.
Автор: Destrifer
Дата сообщения: 23.03.2009 10:38
Помогите плиз.
Есть консольная программа которая на вход и выход принимает только конкретные имена файлов.
Мне нужно чтобы она обрабатывала только файлы с определенным расширением, но с любым именем файла.
Думал сохранить имена в переменной, переименовать, обработать, а потом переименовать обратно, но не получается. Сколько ни бился, смог только реализовать, чтобы она переименовывала файлы на забитые в программе имена, и обрабатывала их, а мне нужно чтоб исходные имена файлов не менялись.
Автор: king_stiven
Дата сообщения: 23.03.2009 11:08
Destrifer
всё просто .сформулируй сначала задачу. что имеем что надо получить. с конкретными именами и со своим решением
Автор: Destrifer
Дата сообщения: 23.03.2009 11:50
king_stiven
Ок.
Имеем стандартный синтаксис программы:
jpegtran -copy none -optimize 1.jpg 2.jpg
Нужно чтобы программа работала для всех помещенных в папку jpg.
jpegtran -copy none -optimize *.jpg *.jpg не работает.
p.s. упомянутый выше вариант решения, увы, остался дома
Автор: Serhiy123
Дата сообщения: 23.03.2009 12:07
Elroir

Цитата:
нужно использовать команду setlocal enabledelayedexpansion и вместо символа "%", использовать символ "!".


Спасибо вам огромное - заработало!!!
А я вчера день продолбался - не мог понять в чем дело. Ошибок нету, синтаксис в порядке, а фрагмент не работал. Вот уж век живи - век учись
Автор: king_stiven
Дата сообщения: 23.03.2009 12:56
Destrifer

Код: cd /d сюда полный путь к папке
for %%c in (*.jpg) do jpegtran -copy none -optimize %%c %%~nc_optimiz_.jpg
Автор: Destrifer
Дата сообщения: 23.03.2009 13:44
king_stiven
Спасибо.
Вот что пишет cmd:

Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

C:\Documents and Settings\pavel>cd /d C:\Documents and Settings\pavel\Рабочий ст
ол\test

C:\Documents and Settings\pavel\Рабочий стол\test>for %%c in (*.jpg) do jpegtran
-copy none -optimize %%c %%~nc_optimiz_.jpg
Непредвиденное появление: %%c.

C:\Documents and Settings\pavel\Рабочий стол\test>for %%c in (*.jpg) do jpegtran
-copy none -optimize "%%c" "%%~nc_optimiz_.jpg"
Непредвиденное появление: %%c.
Автор: king_stiven
Дата сообщения: 23.03.2009 14:08
Destrifer

Код: cd /d сюда полный путь к папке
for %%c in (*.jpg) do call :wer "%%~nxc" "%%~nc_optimiz_.jpg"
goto :eof
:wer
jpegtran -copy none -optimize "%~1" "%~2"
Автор: Destrifer
Дата сообщения: 23.03.2009 14:28
king_stiven
Спасибо большое!

А как сделать чтоб он просто подменял старый файл новым?
Пишу:
cd /d сюда полный путь к папке
for %%c in (*.jpg) do call :wer "%%~nxc" "%%~nc.jpg"
goto :eof
:wer
jpegtran -copy none -optimize "%~1" "%~2"

Не работает .
Автор: MAD_est
Дата сообщения: 23.03.2009 15:15
доброго времени суток. накатал что то подобное, этот текст считает количество файлов в папке и проверяет, если больше необходимого количества, удаляет самый ранний и упаковывает заново папку. Эта беда работала, потом началась выдавать ошибка "Непредвиденное появление >.", после шага "set /a count+=1" в чем косяк?!?! заранее спасибо...


Код: @echo off
for /f "tokens=*" %%i in ('dir /b /s /a-d "D:\1\*.zip"') do (
set /a count+=1
)
if %count% >= 2 (for /f "tokens=*" %%c in ('dir /b /s /a-d "D:\1\*.zip"') do (del D:\1\%%~nc.zip
    goto :pack)
) else (
goto :pack)
goto :eof
:pack
"C:\Program Files\WinRAR\Rar.exe" a -agYYYYMMDD "D:\1\Trade_" "D:\1c_Bases\Torg"
Автор: king_stiven
Дата сообщения: 23.03.2009 15:33
if %count% >= 2
поменяй на
if %count% GEQ 2

EQL - равно
NEQ - не равно
LSS - меньше
LEQ - меньше или равно
GTR - больше
GEQ - больше или равно
Автор: strat
Дата сообщения: 23.03.2009 15:59
писал батник по просьбе, может кому еще пригодится, сам знаю что неоптимальный но все же, а может кто подскажет и лучшее решение.

задача была проверить систему - xp/vista/7, если виста/7 то проверить uac в виде двух ключей ConsentPromptBehaviorAdmin и EnableLUA, если равны 0 то значит uac выключен и можно продолжить работу, если не 0 то вывести сообщение о нужном выключении uac


Код: echo off
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v ConsentPromptBehaviorAdmin
if errorlevel 1 goto xp

reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA
if errorlevel 1 goto xp
rem Тут если ключа не существует то значит это не Vista/7 и можно переходить к продолжению запуска


for /f "tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "ConsentPromptBehaviorAdmin"') do set cons=%%a

if %cons% == 0x0 goto enlua else goto dis

:enlua
for /f "tokens=3" %%b in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "EnableLUA"') do set lua=%%b

if %lua%==0x0 goto xp else goto dis


is

rem Тут выдаем сообщение о том что надо выключить UAC

echo disable UAC
pause


:xp
rem Тут продолжаем установку т.к. либо xp либо uac выключен
echo xp
pause
Автор: klimusu
Дата сообщения: 23.03.2009 17:22
Подскажите что поменялось в win 2008..

в 2003 скрипт работает

for /f "tokens=1,2" %%u in ('date /t') do set d=%%v
for /f "tokens=1" %%u in ('time /t') do set t=%%u
if "%t:~1,1%"==":" set t=0%t%
rem set timestr=%d:~6,4%%d:~3,2%%d:~0,2%%t:~0,2%%t:~3,2%
set datestr=%d:~6,4%-%d:~0,2%-%d:~3,2%

echo %datestr%

выводит дату в формате год-месяц-день
Автор: ameelien
Дата сообщения: 23.03.2009 21:19
помогите написать грамотно батник, а то упарился.. тупить 2 дня.

Задача:
В папке c:\FOLDER\
есть подпапки \test1@fold\ \test2@fold\ \test3@fold\ \test4@fold\
Есть в системе юзеры test1, test2, test3, test4
Суть = Назначение ПРАВ на папки тому, чей логин виднеется в имени папки.

Я что смог сделать:

Это выводит все папки в директории
for /f "usebackq" %%s in (`dir /B /A:D`) do ( echo %%s )

Это вариант если папки = имя пользователя
for /f "usebackq" %%i in (`dir /B /A:D`) do (echo Y|CACLS C:\FOLDER\%%i /T /G %%i:F /C)


Это решение по извлечению из имени папки - имени пользователя,
тоесть на вводе test1@fold => на выводе получим то что до собачки test1

for /f "usebackq tokens=1 delims=@" %%d in (`dir /B /A:D`) do (echo %%d )



Вот куку нехватает это всё в кучу собрать...((((
Автор: ju ja
Дата сообщения: 23.03.2009 21:49
помогите
пишу
for /f "J: " %a in (*.*) do for %b in (%a) do for /f "tokens = 1,2,3,4,5 delims =. ;" %c in ('echo %~tb') do if %e%d%c lSS YYYYMMDD del %d

ищет только документы у которых в названии нет пробелов и в папках без пробелов, как заставить игнорировать пробелы?
Автор: ameelien
Дата сообщения: 23.03.2009 22:13
помогите написать грамотно батник, а то упарился.. тупить 2 дня.

Задача:
В папке c:\FOLDER\
есть подпапки \test1@fold\ \test2@fold\ \test3@fold\ \test4@fold\
Есть в системе юзеры test1, test2, test3, test4
Суть = Назначение ПРАВ на папки тому, чей логин виднеется в имени папки.

Я что смог сделать:

Это выводит все папки в директории
for /f "usebackq" %%s in (`dir /B /A:D`) do ( echo %%s )

Это вариант если папки = имя пользователя
for /f "usebackq" %%i in (`dir /B /A:D`) do (echo Y|CACLS C:\FOLDER\%%i /T /G %%i:F /C)


Это решение по извлечению из имени папки - имени пользователя,
тоесть на вводе test1@fold => на выводе получим то что до собачки test1

for /f "usebackq tokens=1 delims=@" %%d in (`dir /B /A:D`) do (echo %%d )



Вот куку нехватает это всё в кучу собрать...((((

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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