Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - найти файлы по расширению, имя файлов передавать на исполнение

Ответить
Настройки темы
CMD/BAT - найти файлы по расширению, имя файлов передавать на исполнение

Новый участник


Сообщения: 16
Благодарности: 2


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: orgia
Дата: 05-03-2015
Описание: добавить
Всем привет!
Просьба помочь в решении задачки.
Есть код:
setlocal enabledelayedexpansion
SET "ifile=%~1"
SET "tfile=%~d1%~p1%~n1.dcbank"
set "Block_end=0"
if not exist "!ifile!" echo File !ifile! not found&pause&exit /b
IF EXIST "!tfile!" type nul>"!tfile!"

FOR /F "usebackq delims=" %%a IN ("!ifile!") DO (
set "line=%%a"
rem конец блока следующий пропускаем
if !Block_end! equ 1 (
set "Block_end=0"
echo.>>"!tfile!"
) else (
IF /i "!line!"=="-}" (
set "Block_end=1"
<Nul Set /P $V=!line!>>"!tfile!"
) else (
echo !line!>>"!tfile!"
)
)
)

Просьба помочь дополнить. Необходимо в папке, например С:\1 найти файлы с расширение txt и передать имя в мой код. Полсе обработки в папке с:\1\2 должен получиться файл с раширением dcbank.
В данный момент имя вводится вручную
Заранее блгдрю

Отправлено: 13:02, 05-03-2015

 

Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


orgia, посмотрел Вашу предыдущую тему. Вы так и не прислушались к мудрым советам:
Цитата Iska:
orgia, научитесь уже пользоваться тэгом [code]. »
;
Цитата megaloman:
Мне гораздо легче (и интереснее - главный побудительный мотив отвечать на вопросы) получить чёткое описание проблемы и предложить решение. Постигать логику постановки задачи по приведенному коду долго, и это не по мне »
.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:29, 05-03-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 16
Благодарности: 2

Профиль | Отправить PM | Цитировать


Спасибо за справедливую критику

Код: Выделить весь код
setlocal enabledelayedexpansion
SET "ifile=%~1"
SET "tfile=%~d1%~p1%~n1.dcbank"
set "Block_end=0"
if not exist "!ifile!" echo File !ifile! not found&pause&exit /b
IF EXIST "!tfile!" type nul>"!tfile!"

FOR /F "usebackq delims=" %%a IN ("!ifile!") DO (
set "line=%%a"
rem конец блока следующий пропускаем
if !Block_end! equ 1 (
set "Block_end=0"
echo.>>"!tfile!"
) else (
IF /i "!line!"=="-}" (
set "Block_end=1"
<Nul Set /P $V=!line!>>"!tfile!"
) else (
echo !line!>>"!tfile!"
)
)
)
а по сути:
В данном батнике я разбираю входящее сообщение, который разделен на блоки. между блоками символ $.
например:
{jdkjdkj
lsdfnlsd
sdlksdlk
sdnjdsljk
-}
$
{efso
sfdjnfllkfd
ljkfdij
-}

необходимо строку со знаком $ удалить.

батник удаляет, но переменную в виде файла подаю вручную.

Хотелось бы.
Чтобы батник искал в любой папке сообщения с расширением .txt
открывал его анализировал, удалял $ и переносил полученный результат в файл с тем же именем, но расширением например .out

Как то так.

Отправлено: 09:12, 06-03-2015 | #3


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Цитата orgia:
Спасибо за справедливую критику »


orgia, спасибо за понимание. Теперь могу Вам и короткий код предложить:


Код: Выделить весь код
@echo off

set "indir=%~1"
set "inext=.txt"
set "outdir=%indir%\out"
set "outext=.dcbank"

(
for /f "delims=" %%i in ('2^>nul findstr/m \-} "%indir%\*%inext%"') do (
 2>nul md "%outdir%"
 findstr/v ^^\$ "%%i">"%outdir%\%%~ni%outext%"
 )
)|| (echo The necessary files are not found.& pause>nul)

exit/b

.


orgia, перетаскивайте любую папку с обрабатываемыми файлами с расширением ".txt" на пакетный файл, и, если нужные файлы будут найдены, в этой папке будет создан каталог "out", в котором и будут находиться полученные файлы с расширением ".dcbank".

Последний раз редактировалось Georgio, 06-03-2015 в 17:51.


Отправлено: 16:11, 06-03-2015 | #4


Новый участник


Сообщения: 16
Благодарности: 2

Профиль | Отправить PM | Цитировать


Спасибо за предложенный вариант. Батник не отрабатывает. Запускаю батник, кидаю в окно папку с файлом, окно закрывается. Папка out не создается и никаких следов работы батника не обнаруживается. ОС win7 64бит.

Отправлено: 06:25, 10-03-2015 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - найти файлы по расширению, имя файлов передавать на исполнение

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Как найти в архиве тестовые файлы по содержимому, а не по расширению? yaoleg2 Скриптовые языки администрирования Windows 0 04-01-2013 15:18
CMD/BAT - [решено] открытие файлов по расширению (не по имени) 9119 Скриптовые языки администрирования Windows 1 17-12-2012 10:52
CMD/BAT - Сортировка файлов по расширению cyber_ua Скриптовые языки администрирования Windows 9 07-10-2012 23:16
Запрет записи файлов на сетевые ресурсы по расширению Arkan190 Microsoft Windows NT/2000/2003 6 20-06-2011 10:58
Запрет на файлы по расширению adba Microsoft Windows NT/2000/2003 5 06-08-2008 11:57




 
Переход