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

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

Автор: mouser
Дата сообщения: 25.11.2009 11:20
vmazur47

for %%a IN (*.txt) DO call :1 %%a
goto :eof

:1
rar.exe a %1.rar %1
goto :eof
Автор: vmazur47
Дата сообщения: 25.11.2009 12:01
mouser
Не могли бы Вы всё-таки расписать более детально эту команду? Просто поробовал запустить следующее:


Цитата:
for %%a IN (d:\1\*.txt) DO call :1 %%a
goto :eof

:1
rar.exe a %1.rar %1
goto :eof


так оно мне посоздавало на каждый файлик отдельный архив с имененм файла, при этом не обращая внимания на дату. А мне как раз таки нужно собрать все файлы например за 01.11.09 в один ахив с таким же именем, потом за 02.11.09 и так далее.
Автор: mouser
Дата сообщения: 25.11.2009 12:29
vmazur47
формат даты фиксирован ???
Автор: NIKZZZZ
Дата сообщения: 25.11.2009 12:34
vmazur47

Цитата:
собрать все файлы например за 01.11.09 в один ахив с таким же именем


Код: for %%a IN (d:\1\*.txt) DO call :1 "%%a" %%~ta
goto :eof

:1
rar.exe a %2.rar %1
goto :eof
Автор: vmazur47
Дата сообщения: 25.11.2009 12:41

Цитата:
формат даты фиксирован ???

можно любой, лишь бы было понятно за какое число файлики...


Добавлено:

Цитата:
Код:
for %%a IN (d:\1\*.txt) DO call :1 "%%a" %%~ta
goto :eof

:1
rar.exe a %2.rar %1
goto :eof


Спасибо, этот код работает так как надо.
Автор: mouser
Дата сообщения: 25.11.2009 12:55
у меня %date:~0,2%%date:~3,2%%date:~6,4%
возвращает 25112009

for %%a IN (d:\1\*%date:~3,2%%date:~6,4%.txt) DO call :1 %%a %%~ta
goto :eof
:1
rar.exe a %2.rar %1
goto :eof

вот это с архивит за 11 месяц 2009 года

Добавлено:
обрезать с начала и до определенного порядкового номера символа можно, а как обрезать концовку
тоесть будет много файлов разной длины и из их названия нужно вырезать .bat


set BATs=rename.bat
echo %BATs:~0,4%
Автор: alexcoolmagic
Дата сообщения: 25.11.2009 17:04
подскажите, как проверить, что переменная, переданная в командный файл (%1), состоит из двух цифр (00 - 99) и отличить этот случай от других вариантов (например: 0, 7A 001, aa, x, asd и т.п.)
Автор: 01MDM
Дата сообщения: 25.11.2009 17:42
alexcoolmagic

Код:
echo %1 | 1>nul findstr /b "\<[0-9][0-9]\>" || echo wrong param %1
Автор: NIKZZZZ
Дата сообщения: 25.11.2009 17:50
alexcoolmagic

Код: Set var=%1
Set "xx=%var:1=0%"
Set "xx=%xx:2=0%"
Set "xx=%xx:3=0%"
Set "xx=%xx:4=0%"
Set "xx=%xx:5=0%"
Set "xx=%xx:6=0%"
Set "xx=%xx:7=0%"
Set "xx=%xx:8=0%"
Set "xx=%xx:9=0%"
if %xx%==00 echo Ok
Автор: VisioNRU
Дата сообщения: 25.11.2009 20:55

Цитата:
VisioNRU
Попробуй его запускать из его рабочей директории. Т.е сначала перейди в его каталог:

Код:
 
pushd "\Path\To\Installer's Folder"
start setup.exe
popd


не помогло... в общем или инсталлер кривой, или бубен неправильный.

сделал след образом:

xcopy %CD:~0,2%\"путь"\setup.exe "c:\" /r /y
start c:\setup.exe
pause
del C:\setup.exe /f
pause

так запустилось без проблем.
Автор: mugil_cephalus
Дата сообщения: 25.11.2009 22:13
VisioNRU
попробуй start /d
Автор: BVV63
Дата сообщения: 26.11.2009 05:38
Всем привет!
Когда происходить серьёзная ошибка в исполнении проги в иссточнике конструкции For... In ('Программа') Do..., то выводится она (вернее, оповещение о ней) минуя конструкцию. Подскажите, нельзя ли перенаправить вывод об произошедшей ошибке в конструкцию (дабы занести её в лог-файл, поскольку нормальное выполнение тоже заносится в этот файл)?
Автор: mouser
Дата сообщения: 26.11.2009 07:11
моё сообщение наверное не заметили ... повторюсь

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


set BATs=rename.bat
echo %BATs:~0,4%
Автор: 01MDM
Дата сообщения: 26.11.2009 07:35
mouser

Цитата:
будет много файлов разной длины и из их названия нужно вырезать .bat

T.e убрать расширение?

Код:
for %%i in (*.bat) do ren "%%i" "%%~ni"
Автор: mouser
Дата сообщения: 26.11.2009 07:50
01MDM
ага оно

что такое %%~ni ??
Автор: 01MDM
Дата сообщения: 26.11.2009 08:01
mouser

Цитата:
что такое %%~ni ??

for /?
Автор: yx0
Дата сообщения: 26.11.2009 08:56
Помогите решить такую задачу:
В папке появляются файлы с произвольными именами но одинаковыми расширениями.

Необходимо организовать счетчик таких файлов. Когда количество файлов достигает трех, необходимо запускатьдальнейшую процедуру.

Помогите со счетчиком пожалуйста, поиск не помог.
Автор: mouser
Дата сообщения: 26.11.2009 09:19
yx0
попробуй robocopy.exe
Автор: yx0
Дата сообщения: 26.11.2009 10:28
Посмотрел robocopy, не понял как оно может мне помочь, вроде бы утилита для копирования, а копировать мне ничего не надо.

Уточню задачу:

Файлы, которые необходимо подсчитывать генерирует сторонняя программа.

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

Примерно так.
Спасибо.
Автор: mouser
Дата сообщения: 26.11.2009 10:49
yx0
выдаcт кол-во файлов из папки 1 с расширением txt

for /f "tokens=*" %%i in ('dir /b /a-d "1\*.txt"') do set /a count+=1
echo %count% files
Автор: yurkesha
Дата сообщения: 26.11.2009 11:16
yx0
Можно еще вот так:
Код: FOR /F "tokens=* delims=" %%i IN ('DIR /b /a-d "1\*.txt" 2^>NUL^|FIND /c /i ".txt"') DO SET "KOL=%%i"
ECHO %KOL%
Автор: yx0
Дата сообщения: 26.11.2009 11:26
2Mouser
2yurkesha

Большое спасибо, работает!
Автор: BlackBerry
Дата сообщения: 26.11.2009 12:02
А чем можно отлаживать батники - пройти по шагам, посмотреть переменные ?
Автор: mouser
Дата сообщения: 26.11.2009 12:04
BlackBerry
))) первый раз такое слышу ... а что можно?? )))

он же сам выдаёт где у него ошибка и в какой строке
echo on
Автор: mugil_cephalus
Дата сообщения: 26.11.2009 13:25

Цитата:
посмотреть переменные ?

set без ключей покажет все variables

Код: set
pause
Автор: xBoo
Дата сообщения: 26.11.2009 18:17
Эта команда

Код: cmd /c for /f "tokens=1-6 delims=:., " %a in ("%date% %time:~0,8%") do copy nul "%c%b%a-%d%e%f.txt"
Автор: 01MDM
Дата сообщения: 26.11.2009 18:54
По ассоциации файлов:

Код:
cmd /v:on /c "set f=%date:.=%-%time:~0,-3%.txt && cd.>"!f::=!" && "!f::=!""
Автор: xBoo
Дата сообщения: 26.11.2009 19:24
01MDM, огромная Вам благодарность
Автор: mindusa
Дата сообщения: 26.11.2009 20:15
собсна лень было читать всю тему... выкладываю самое нужное
и кстате батники писались давно поэтому за работоспособность не отвечаю
простейший бэкап базы 1с accinformalkz:

echo on
echo date %date% >> D:\backup\bases_V8\accinformalkz\%date%.log
echo starttime %time% >> D:\backup\bases_V8\accinformalkz\%date%.log
"c:\Program Files\1cv8\bin\1cv8.exe" config /s1cserver\accinformalkz /NЃнЄ Ї /P123 /AU- /DisableStartupMessages /dumpIB D:\backup\bases_V8\accinformalkz\%date%.dt
echo endtime %time% >> D:\backup\bases_V8\accinformalkz\%date%.log
echo >> D:\backup\bases_V8\accinformalkz\%date%.log

простейшее издевательство над пользователями )))

erase /f /s \\server\d$\users\*.mp3
erase /f /s \\server\d$\users\*.wma
erase /f /s \\server\d$\users\*.cda
erase /f /s \\server\d$\users\*.avi
erase /f /s \\server\d$\users\*.wmv

erase /f /s \\server\d$\share\*.mp3
erase /f /s \\server\d$\share\*.wma
erase /f /s \\server\d$\share\*.cda
erase /f /s \\server\d$\share\*.avi
erase /f /s \\server\d$\share\*.wmv


бэкап баз 1с7

"c:\Program Files\WinRAR\winrar.exe" a /r "d:\backup\Bases_v7\bases_v7_%date%.rar" /m5 /inul /y "\\server\d$\bases_v7\"

бэкап диска C:\ средствами акрониса

"c:\program files\acronis\trueimageenterprise\trueimagecmd" /create /filename:"d:\backup\crouter\c_%date%.tib" /partition:1-1 /progress:on

затирание бэкапов старше 10 дней

forfiles /p d:\backup\bases_v7 /s /d -11 /c "cmd /c erase @file"
forfiles /p d:\backup\bases_v8\accinformalkz /s /d -11 /c "cmd /c erase @file"
forfiles /p d:\backup\cServer /s /d -11 /c "cmd /c erase @file"

за кривость скриптов не пинайте) писал сам для себя и мне этого хватало


Автор: zepterman
Дата сообщения: 26.11.2009 20:49
Помогите сделать батник, который бы:
1. Останавливал службу Диспетчер очереди печати (spoolsv.exe)
2. Удалял содержимое папки C:\Windows\system32\spool\PRINTERS
3. Запускал службу Диспетчер очереди печати (spoolsv.exe)

Почитал мануал и сделал так, не работает:

Код:
Echo OFF
Cls
Net STOP <spoolsv.exe>
PushD C:\Windows\system32\spool\PRINTERS
if not errorlevel 1 RD /s /q .
PopD
Net STOP <spoolsv.exe>

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

Предыдущая тема: во вкладке автозагрузка


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