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

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

Автор: Elroir
Дата сообщения: 24.09.2007 15:40
cluster

Код:
@echo off
setlocal enabledelayedexpansion
set "folder=f:\"
set "copy_to=f:\testc\"
for %%a in (%folder%*.*) do (
set "file_date=%%~ta"
set "file_dm=!file_date:~0,5!"
if "!file_dm!"=="31.01" call :copy_file "%%a"
if "!file_dm!"=="29.02" call :copy_file "%%a"
if "!file_dm!"=="28.02" call :copy_file "%%a"
if "!file_dm!"=="31.03" call :copy_file "%%a"
if "!file_dm!"=="30.04" call :copy_file "%%a"
if "!file_dm!"=="31.05" call :copy_file "%%a"
if "!file_dm!"=="30.06" call :copy_file "%%a"
if "!file_dm!"=="31.07" call :copy_file "%%a"
if "!file_dm!"=="31.08" call :copy_file "%%a"
if "!file_dm!"=="30.09" call :copy_file "%%a"
if "!file_dm!"=="31.10" call :copy_file "%%a"
if "!file_dm!"=="30.11" call :copy_file "%%a"
if "!file_dm!"=="31.12" call :copy_file "%%a"
)
forfiles /p %folder% /m *.* /d -8 /c "cmd /c if @isdir==FALSE del /q /f @path"
goto :EOF
:copy_file
copy %1 %copy_to% > nul
Автор: Chef
Дата сообщения: 24.09.2007 18:27
Подскажите пожалуйста, почему

Код:
for /F "tokens=3* skip=3 delims=    " %%a in ('reg query "HKLM\SOFTWARE\Borland\BDS\5.0\Library" /v "Search Path"') do set spath=%%a
echo %spath%
Автор: 01MDM
Дата сообщения: 24.09.2007 18:40
Chef

Если перебираются несколько значений, то попробуй так


Код:
for /F "tokens=3* skip=3 delims= " %%a in ('reg query "HKLM\SOFTWARE\Borland\BDS\5.0\Library" /v "Search Path"') do (
set "spath=%%a"
call:_spath
)
goto:eof
:_spath
echo %spath%
Автор: Chef
Дата сообщения: 24.09.2007 19:02
01MDM
Нет. Перебирать ничего не надо.

Upd: оказывается в таком виде:

Код:
for /F "tokens=3* skip=3 delims= " %%a in ('reg query "HKLM\SOFTWARE\Borland\BDS\5.0\Library" /v "Search Path"') do set spath=%%a
echo %spath%
Автор: cluster
Дата сообщения: 24.09.2007 22:21
Elroir
Спасибо. Всё работает. За исключением имён файлов с пробелами.
Только поправил строку

Цитата:
forfiles /p %folder% /m *.* /d -8 /c "cmd /c if @isdir==FALSE del /q /f @path"
на
forfiles -p%folder% -m*.* -d-8 -c"cmd /c if @ISDIR==FALSE del /q /f @FILE"

Автор: Elroir
Дата сообщения: 24.09.2007 22:52
cluster

Цитата:
Всё работает. За исключением имён файлов с пробелами

Да - это я недоглядел
Надо либо @path, либо @file взять в кавычки.

Chef
В шапке, в разделе "Описания работы команд и символов участниками темы", почитай
"setlocal enabledelayedexpansion и переменные окружения"
Автор: Chef
Дата сообщения: 25.09.2007 00:08
Elroir
Спасибо, помогло!
А endlocal, насколько я понял, вызывать не обязательно?
Автор: Elroir
Дата сообщения: 25.09.2007 00:15
Chef

Цитата:
А endlocal, насколько я понял, вызывать не обязательно?

Если endlocal не был вызван в коде - он автоматически вызывается при выходе из батника.
Автор: cluster
Дата сообщения: 25.09.2007 01:10
Elroir

Цитата:
Надо либо @path, либо @file взять в кавычки

1. А у меня версия forfiles.exe понимает переменные только в верхнем регистре (@PATH, @FILE).
2. Зачем тут @PATH? Мы же обрабатываем файлы. Или ты имел в виду %folder%?
3. Кавычки не помогают ): Пробовал по всякому.

Цитата:
forfiles -p%folder% -m*.* -d-8 -c"cmd /c if @ISDIR==FALSE del /q /f "@FILE""
forfiles -p%folder% -m*.* -d-8 -c"cmd /c if @ISDIR==FALSE del /q /f "@FILE"
forfiles -p%folder% -m*.* -d-8 -c"cmd /c if @ISDIR==FALSE del /q /f "@PATH\@FILE""
Автор: Elroir
Дата сообщения: 25.09.2007 01:33
cluster

Цитата:
1. А у меня версия forfiles.exe понимает переменные только в верхнем регистре (@PATH, @FILE).

Ну ты понял, что я имел в виду

Цитата:
2. Зачем тут @PATH?

@PATH - это полный путь к файлу, включая сам файл.

Цитата:
3. Кавычки не помогают ): Пробовал по всякому.

Очень странно - у меня как раз работает первый из опробованных тобой вариантов.
Попробуй другую версию forfiles.exe - http://dump.ru/files/m/m3964988801/
Это та, которой я пользуюсь (возьми мой вариант кода с кавычками вокруг @path).
Автор: cluster
Дата сообщения: 25.09.2007 13:00
Elroir

Цитата:
Попробуй другую версию forfiles.exe - http://dump.ru/files/m/m3964988801/

Оо, гуд. Всё отлично работает. Твой файлик ровно в 4 раза больше весит.
Автор: topotuno
Дата сообщения: 25.09.2007 15:47
Вопрос такой как можно определить доступные локальные и вообще все диски (включая сменные) в режиме реального времени.
Автор: Maza Faka
Дата сообщения: 25.09.2007 17:56
topotuno

Код:
echo list volume | diskpart
Автор: AZJIO
Дата сообщения: 26.09.2007 08:55
У меня проблема: нужно скачать файл с ФТП размером 2 Гб, но за компом сижу урывками и ФТП тоже по графику работает. Реально ни как не получается. Есть ли возможность в автозагрузку положить батник для автоматического соединения с сервером и скачки, с возможностью докачки. И какие проги поддерживают такие закачки.
Из клиентов есть встроенный в Тотал плагин, "CuteFTP Professional", и если что скачаю другой с поддержкой.
Автор: KapralBel
Дата сообщения: 26.09.2007 09:03
AZJIO

get_ftp.txt:

Код: open ftp.kaspesky.ru

user anonymous
pass aa@aa.ru
pwd /updates
get daily.avc
bye
Автор: NIKZZZZ
Дата сообщения: 26.09.2007 09:21
AZJIO

Цитата:
И какие проги поддерживают такие закачки.

Большинство менеджеров-качалок поддерживают скачки с FTP, например Reget, FlashGet. Почти во всех есть планировщик.


Автор: ZloyBehemoth
Дата сообщения: 26.09.2007 11:28
Не подскажите как можно решить задачу средствами комстроки windows - получить электронную почту по протоколу pop3, сохранить вложение в указанную папку. Спасибо!
Автор: KapralBel
Дата сообщения: 26.09.2007 11:55
ZloyBehemoth
Именно средствами комм.строки - не получится
Надо использовать сторонние программы
Автор: ZloyBehemoth
Дата сообщения: 26.09.2007 12:02
KapralBel


Цитата:
Надо использовать сторонние программы


Какие порекомендуете?
Получить сообщения как текстовый файл я смог (popclient.exe). А как дальше из него выжать вложение?
Автор: KapralBel
Дата сообщения: 26.09.2007 12:09
надо смотреть как сохранено вложение
UUE/MIME
и дальше искать утиль
Автор: moonkir
Дата сообщения: 26.09.2007 13:08

Код:
@echo off
:Choice
set /p choice=Распаковать^(y^),Не распаковывать^(n^)?
echo.
if "!choice:~0,1!"=="y" goto :unpack
if "!choice:~0,1!"=="n" goto :nounpack
goto :Choice

:unpack
cd %WINDIR%\DriverPacks
%WINDIR%\DriverPacks\D.exe /wait
del %WINDIR%\DriverPacks\D.exe
reboot.exe

:nounpack

Pause
Exit
Автор: ZloyBehemoth
Дата сообщения: 26.09.2007 13:20
KapralBel


Цитата:
надо смотреть как сохранено вложение
UUE/MIME


Для декодирования подходит base64.exe, но перед эти надо как то удалить из текстового файла все заголовки. Как?
Автор: KapralBel
Дата сообщения: 26.09.2007 13:50
ZloyBehemoth
Кинь ссылку на эту утиль - взгляну что можно сделать
Автор: ZloyBehemoth
Дата сообщения: 26.09.2007 13:56
KapralBel

Цитата:
Кинь ссылку на эту утиль - взгляну что можно сделать


В полезных утилитах - первая строка:
http://www.fourmilab.ch/webtools/base64/
Автор: KapralBel
Дата сообщения: 26.09.2007 14:17
ZloyBehemoth
Боюсь общий способ на батнике предложить не получится
В заголовке могут присуствовать некоторые символы, на которые батничек реагирует особо

FROM: "Bill. Gates" <Bill.Gates@Microsoft.com>
Автор: Maza Faka
Дата сообщения: 26.09.2007 14:41
moonkir
Используй вместо символов "!" ,символы "%", либо вставляй после "@ECHO OFF" - SETLOCAL ENABLEDELAYEDEXPANSION.
Автор: KapralBel
Дата сообщения: 26.09.2007 14:50
ZloyBehemoth
Надо искать утилиту, которая игнорирует мусор (попробовал - куча ссылок, а у меня нет времени перебирать)
Либо откусывать мусор на проге/скрипте (написанной, на других языках)
Автор: moonkir
Дата сообщения: 26.09.2007 14:53
Maza Faka
ёмаё, замена символов помогла, спасибо
а в другом файле я смотерл, тоже сам его писал прекрасно работает и с !
Автор: Elroir
Дата сообщения: 26.09.2007 14:59
moonkir
setlocal enabledelayedexpansion и переменные окружения
Автор: moonkir
Дата сообщения: 26.09.2007 15:02
Все понял, я с другого файла копировал а там было
Код: if exist "..\Cab\%~n1.cab" (
:Choice
set /p choice=Заменить^(o^),Пропустить^(s^),Заменить Все^(a^)?
echo.
if "!choice:~0,1!"=="o" goto continue
if "!choice:~0,1!"=="a" (set "updall=true" & goto continue)
if "!choice:~0,1!"=="s" goto :EOF
goto :Choice
)

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

Предыдущая тема: Доступ к реестру через RegEdit?


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