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

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

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

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


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

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


Есть батник с таким кодом
Код: Выделить весь код
set list=list.txt
set xml=iplist.xml

for /F  %%i in (%list%) do (
  type before.txt>>%xml%
  <nul set /p strTemp=%%i>>%xml%
  type middle.txt>>%xml%
  <nul set /p strTemp=%%i>>%xml%
  type after.txt>>%xml%
  echo. >> %xml%
)
Но он работает только с определенным файлом и сохраняет в определенный файл
Нужен батник с таким же функционалом, но надо чтобы заместо list.txt был найденный по маске файл и заместо iplist.xml сохранялось в одноименный файл только с расширением .xml
Все txt лежат в 1 папке

Отправлено: 15:34, 14-08-2017

 

Ветеран


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

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


Цитата idenchik1488@vk:
найденный по маске файл »
  1. Приведите маску.
  2. Что делать, если найденных по приведённой маске файлов окажется более одного?

Отправлено: 15:47, 14-08-2017 | #2



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

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


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


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

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


Цитата Iska:
Приведите маску. »
Просто поиск файлов txt
Цитата Iska:
Что делать, если найденных по приведённой маске файлов окажется более одного? »
Выполнять данную команду с каждым файлом, у всех файлов разные названия

Отправлено: 16:00, 14-08-2017 | #3


Ветеран


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

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


Цитата idenchik1488@vk:
Выполнять данную команду с каждым файлом, »
Ага-ага. И над «before.txt», и над «middle.txt», и над «after.txt» — так получается ?
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=%~1

if defined sSourceFolder (
	if exist "%sSourceFolder%\." (
		for /f "usebackq delims=" %%i in (`2^>nul dir /b /a:-d "%sSourceFolder%\*.txt" ^| findstr.exe /i /v /b /e /l /c:"before.txt" /c:"middle.txt" /c:"after.txt"`) do (
			for /f "usebackq delims=" %%j in ("%sSourceFolder%\%%~i") do (
				>"%sSourceFolder%\%%~ni.xml" (
					type "before.txt"
					<nul set /p sVar=%%j
					type "middle.txt"
					<nul set /p sVar=%%j
					type "after.txt"
					echo.
				)
			)
		)
	) else (
		echo Can't find source folder [%sSourceFolder%].
		exit /b 2
	)
) else (
	echo Usage: %~nx0 ^<Source folder^>
	exit /b 1
)

endlocal
exit /b 0

Исходная папка задаётся аргументом пакетного файла (также можно просто перетащить папку на пакетный файл в Проводнике).

Не проверялось совершенно. Нужна проверка — выкладывайте пару-тройку образцов *.txt, плюс «before.txt», «middle.txt» и «after.txt», упакованные в архив.

Отправлено: 16:53, 14-08-2017 | #4


Ветеран


Contributor


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

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


Прочтутся все *.txt кроме before.txt, middle.txt, after.txt
Код: Выделить весь код
@Echo Off

Set "Maska=*.txt"
Set Spisok="before.txt" "middle.txt" "after.txt"

Set "BoxIn=Z:\Box_In"
If Not "%1"=="" (
	Set "BoxIn=%~1"	
)

If Not "%BoxIn%"=="" (
	Pushd "%BoxIn%" || (Echo Folder "%BoxIn%" not found &Pause &GoTo :Eof)
)

FOR %%f IN ("%Maska%") DO Call :ToXml "%%~f" %Spisok%
Popd

GoTo :Eof

:ToXml
	If /I %1==%2 GoTo :Eof
	If /I %1==%3 GoTo :Eof
	If /I %1==%4 GoTo :Eof

>"%~n1.xml" (for /F "usebackq delims=" %%i in (%1) do (
	type %2
  	<nul set /p strTemp=%%i
	type %3
	<nul set /p strTemp=%%i
	type %4
  	echo.
	)
)
GoTo :Eof
Исходную папку можно прописать явно, но можно задать аргументом пакетного файла (также можно просто перетащить папку на пакетный файл в Проводнике), при этом явное задание папки будет проигнорировано.
Если папка задана Set "BoxIn=" и батник запускается из папки с указанными файлами, то будут обработаны файлы в текущей папке.

Проверялось на выдуманных мной файлах.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 15-08-2017 в 11:09.


Отправлено: 19:11, 14-08-2017 | #5



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] поиск файла по маске и запись этого имени в переменную ___dima___ Скриптовые языки администрирования Windows 20 18-06-2017 01:46
Любой язык - [решено] Выполнение команды по ssh. crocki Скриптовые языки администрирования Windows 2 01-08-2016 14:07
CMD/BAT - Копирование файлов в папки по маске файла и маске папки (BAT) skyskiff Скриптовые языки администрирования Windows 7 20-09-2015 22:41
CMD/BAT - [решено] Поиск файла по маске и по дате Баян Скриптовые языки администрирования Windows 2 14-03-2011 13:32
CMD/BAT - [решено] поиск файла по маске evilfelix Скриптовые языки администрирования Windows 11 23-09-2010 16:26




 
Переход