king_stiven - спасибо за freedisk!
» Задачи на bat-файлах 6
Здравствуйте, помогите, пожалуйста!
Нужно написать bat, который лежит в корне всех директорий, чтобы пробегался по всем директориям в поисках .txt файлов и выполнял для каждого из них команду
CB.exe – rendering имя_найденого_файла.txt
Нужно написать bat, который лежит в корне всех директорий, чтобы пробегался по всем директориям в поисках .txt файлов и выполнял для каждого из них команду
CB.exe – rendering имя_найденого_файла.txt
batniki
Код: for /f "tokens=*" %%c in ('dir *.txt /b /s /a:-d') do echo "%%c"
Код: for /f "tokens=*" %%c in ('dir *.txt /b /s /a:-d') do echo "%%c"
king_stiven, спасибо, то что нужно!
Здравствуйте!
Написал скрипт:
Код: @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
Написал скрипт:
Код: @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
Serhiy123
Цитата:
Работает!
Спасибо! Всё получилось кратко и как надо
Цитата:
a500a
Код:
echo http://%myip:~1%>myip.js
Работает!
Спасибо! Всё получилось кратко и как надо
Помогите нужно сменить .txt2 расширение всех файлов на .txt
for /f "tokens=*" %%c in ('dir *.txt2 /b /s /a:-d') do ren "%%c" ....
for /f "tokens=*" %%c in ('dir *.txt2 /b /s /a:-d') do ren "%%c" ....
batniki
Код:
@echo off
for /f "tokens=*" %%i in ('dir /b /s *.txt2') do ren "%%~fi" "%%~ni.txt"
Код:
@echo off
for /f "tokens=*" %%i in ('dir /b /s *.txt2') do ren "%%~fi" "%%~ni.txt"
скажите пожалуйста можно ли сделать батник следующего вида:
К примеру есть файл app.exe он запускается с параметром 1
Нпаример:
start app.exe 1
Я хочу поменять расширение на dat получится app.dat но тогда естественно он не запустится как exe... Можно ли сделать батник который бы понимал что app.dat это app.exe ?
К примеру есть файл app.exe он запускается с параметром 1
Нпаример:
start app.exe 1
Я хочу поменять расширение на dat получится app.dat но тогда естественно он не запустится как exe... Можно ли сделать батник который бы понимал что app.dat это app.exe ?
01MDM, спасибо!
Еще вопрос:
Как пройтись по всем папкам найти .txt файлы, посчитать количество строк всех этих файлов, кроме строк начинающихся на # и //
Еще вопрос:
Как пройтись по всем папкам найти .txt файлы, посчитать количество строк всех этих файлов, кроме строк начинающихся на # и //
Помогите, плз, вот с каким вопросом.
Почему вот такая конструкция работает (выдает количество свободного места на текущем диске):
Код:
for /f "tokens=3" %%J in ('dir %~d0') do set free_space=%%J
echo %free_space%
Почему вот такая конструкция работает (выдает количество свободного места на текущем диске):
Код:
for /f "tokens=3" %%J in ('dir %~d0') do set free_space=%%J
echo %free_space%
Удалено автором. Ошибся.
Serhiy123
Цитата:
Цитата:
Это справедливо и для for-a, и для скобок if-a.
Цитата:
Почему вот такая конструкция работает ..., а будучи заключенной в оператор IF перестает работать:
Цитата:
В обычном случае, чтобы узнать значение переменной окружения, надо воспользоваться конструкцией %переменная%. Однако, если значение переменной меняется внутри цикла и читается там же, то для корректной работы батника, нужно использовать команду setlocal enabledelayedexpansion и вместо символа "%", использовать символ "!". Иначе, значение переменной в цикле будет всегда одним и тем же - таким, каким было до входа в цикл.
Это справедливо и для for-a, и для скобок if-a.
Помогите плиз.
Есть консольная программа которая на вход и выход принимает только конкретные имена файлов.
Мне нужно чтобы она обрабатывала только файлы с определенным расширением, но с любым именем файла.
Думал сохранить имена в переменной, переименовать, обработать, а потом переименовать обратно, но не получается. Сколько ни бился, смог только реализовать, чтобы она переименовывала файлы на забитые в программе имена, и обрабатывала их, а мне нужно чтоб исходные имена файлов не менялись.
Есть консольная программа которая на вход и выход принимает только конкретные имена файлов.
Мне нужно чтобы она обрабатывала только файлы с определенным расширением, но с любым именем файла.
Думал сохранить имена в переменной, переименовать, обработать, а потом переименовать обратно, но не получается. Сколько ни бился, смог только реализовать, чтобы она переименовывала файлы на забитые в программе имена, и обрабатывала их, а мне нужно чтоб исходные имена файлов не менялись.
Destrifer
всё просто .сформулируй сначала задачу. что имеем что надо получить. с конкретными именами и со своим решением
всё просто .сформулируй сначала задачу. что имеем что надо получить. с конкретными именами и со своим решением
king_stiven
Ок.
Имеем стандартный синтаксис программы:
jpegtran -copy none -optimize 1.jpg 2.jpg
Нужно чтобы программа работала для всех помещенных в папку jpg.
jpegtran -copy none -optimize *.jpg *.jpg не работает.
p.s. упомянутый выше вариант решения, увы, остался дома
Ок.
Имеем стандартный синтаксис программы:
jpegtran -copy none -optimize 1.jpg 2.jpg
Нужно чтобы программа работала для всех помещенных в папку jpg.
jpegtran -copy none -optimize *.jpg *.jpg не работает.
p.s. упомянутый выше вариант решения, увы, остался дома
Elroir
Цитата:
Спасибо вам огромное - заработало!!!
А я вчера день продолбался - не мог понять в чем дело. Ошибок нету, синтаксис в порядке, а фрагмент не работал. Вот уж век живи - век учись
Цитата:
нужно использовать команду setlocal enabledelayedexpansion и вместо символа "%", использовать символ "!".
Спасибо вам огромное - заработало!!!
А я вчера день продолбался - не мог понять в чем дело. Ошибок нету, синтаксис в порядке, а фрагмент не работал. Вот уж век живи - век учись
Destrifer
Код: cd /d сюда полный путь к папке
for %%c in (*.jpg) do jpegtran -copy none -optimize %%c %%~nc_optimiz_.jpg
Код: cd /d сюда полный путь к папке
for %%c in (*.jpg) do jpegtran -copy none -optimize %%c %%~nc_optimiz_.jpg
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.
Спасибо.
Вот что пишет 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.
Destrifer
Код: cd /d сюда полный путь к папке
for %%c in (*.jpg) do call :wer "%%~nxc" "%%~nc_optimiz_.jpg"
goto :eof
:wer
jpegtran -copy none -optimize "%~1" "%~2"
Код: cd /d сюда полный путь к папке
for %%c in (*.jpg) do call :wer "%%~nxc" "%%~nc_optimiz_.jpg"
goto :eof
:wer
jpegtran -copy none -optimize "%~1" "%~2"
king_stiven
Спасибо большое!
А как сделать чтоб он просто подменял старый файл новым?
Пишу:
cd /d сюда полный путь к папке
for %%c in (*.jpg) do call :wer "%%~nxc" "%%~nc.jpg"
goto :eof
:wer
jpegtran -copy none -optimize "%~1" "%~2"
Не работает .
Спасибо большое!
А как сделать чтоб он просто подменял старый файл новым?
Пишу:
cd /d сюда полный путь к папке
for %%c in (*.jpg) do call :wer "%%~nxc" "%%~nc.jpg"
goto :eof
:wer
jpegtran -copy none -optimize "%~1" "%~2"
Не работает .
доброго времени суток. накатал что то подобное, этот текст считает количество файлов в папке и проверяет, если больше необходимого количества, удаляет самый ранний и упаковывает заново папку. Эта беда работала, потом началась выдавать ошибка "Непредвиденное появление >.", после шага "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"
Код: @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"
if %count% >= 2
поменяй на
if %count% GEQ 2
EQL - равно
NEQ - не равно
LSS - меньше
LEQ - меньше или равно
GTR - больше
GEQ - больше или равно
поменяй на
if %count% GEQ 2
EQL - равно
NEQ - не равно
LSS - меньше
LEQ - меньше или равно
GTR - больше
GEQ - больше или равно
писал батник по просьбе, может кому еще пригодится, сам знаю что неоптимальный но все же, а может кто подскажет и лучшее решение.
задача была проверить систему - 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
задача была проверить систему - 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
Подскажите что поменялось в 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%
выводит дату в формате год-месяц-день
в 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%
выводит дату в формате год-месяц-день
помогите написать грамотно батник, а то упарился.. тупить 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 )
Вот куку нехватает это всё в кучу собрать...((((
Задача:
В папке 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 )
Вот куку нехватает это всё в кучу собрать...((((
помогите
пишу
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
ищет только документы у которых в названии нет пробелов и в папках без пробелов, как заставить игнорировать пробелы?
пишу
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
ищет только документы у которых в названии нет пробелов и в папках без пробелов, как заставить игнорировать пробелы?
помогите написать грамотно батник, а то упарился.. тупить 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 )
Вот куку нехватает это всё в кучу собрать...((((
Задача:
В папке 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, истории становления российского интернета. Сделано для людей.