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

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

Ответить
Настройки темы
CMD/BAT - [решено] Bat-ник автоматического создания списка файлов
Stalker_AleX333


Сообщения: n/a

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


Народ, нужен bat\cmd файл с таким алгоритмом:

1. Сканирует папку, вместе с подпапками, из которой запущен, на предмет наличия файлов с расширением .nif

2. Если файлов не найдено - уведомляет и закрывается:
@echo Файлов .nif, в данной папке и подпапках не найдено!
pause
exit


2.1 Если найден хотя бы один - создает новый текстовый файл без расширения с именем test spawn. Внутри которого, записи (каждая с новой строки) вида: player.placeatme *имя .nif файла без расширения*

3. Сохраняет генерируемый файл в ту же папку, откуда был запущен bat-ник.

Отправлено: 16:32, 08-07-2018

 

Ветеран


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

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


У меня другое предложение.
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=%~1

if defined sSourceFolder (
	if exist "%sSourceFolder%\." (
		>nul 2>&1 dir /b /s /a:-d "%sSourceFolder%\*.nif" && (
			>"%sSourceFolder%\test spawn" (
				for /f "usebackq delims=" %%i in (
					`2^>nul dir /b /s /a:-d "%sSourceFolder%\*.nif"`
				) do echo player.placeatme %%~dpni
			)
		) || (
			echo Файлов *.nif в каталоге [%sSourceFolder%] и во вложенных в него каталогах не найдено.
			exit /b 3
		)
	) else (
		echo Can't find source folder [%sSourceFolder%].
		exit /b 2
	)
) else (
	echo Usage: "%~nx0" ^<Source folder^>
	exit /b 1
)

endlocal
exit /b 0
Целевой каталог указывается параметром пакетного файла (также можно просто перетащить папку на пакетный файл в Проводнике).

Цитата Stalker_AleX333:
player.placeatme *имя .nif файла без расширения* »
Если только имя — в чём смысл поиска во вложенных каталогах? В приведённом коде указывается полный путь и имя без расширения.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:56, 08-07-2018 | #2



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

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


Ветеран


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

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


Цитата Iska:
Если только имя — в чём смысл поиска во вложенных каталогах? »
и у меня такой вопрос возник, так как иначе вроде и такого достаточно:
Код: Выделить весь код
@echo off
set "dnif=C:\papka"
set "f=spisok.txt"
set "exp=nif"
set "dbv=player.placeatme"

>"%f%" (for /f "delims=" %%a in ('2^>nul where /r "%dnif%" "*.%exp%"') do @echo %dbv% %%~na)
<"%f%">nul find /v "" || (del "%f%"& echo Файлов .nif, в данной папке и подпапках не найдено!)
pause& exit

Отправлено: 18:08, 08-07-2018 | #3

Stalker_AleX333


Сообщения: n/a

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


Iska, нет, мне путь до .nif-ов не нужен совершенно. В сгенерированном файле его не должно быть. Что подправить в коде?

Вид должен быть таким, как пример
player.placeatme 000132aa
player.placeatme 0001367b
player.placeatme 0001367c
и т.д.

Отправлено: 18:37, 08-07-2018 | #4


Ветеран


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

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


Stalker_AleX333, уберите dp в:
Код: Выделить весь код
				) do echo player.placeatme %%~dpni
Но Вы так и не сказали, в чём тогда смысл поиска во вложенных каталогах? А если там будут одноимённые файлы, что тогда получится?

Отправлено: 18:50, 08-07-2018 | #5

Stalker_AleX333


Сообщения: n/a

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


Цитата Iska:
Но Вы так и не сказали, в чём тогда смысл поиска во вложенных каталогах? А если там будут одноимённые файлы, что тогда получится? »
В моем случае, точно не будут. Все файлы с данным расширением имеют уникальные имена, получаемые их при генерации в СДК одной известной игрушки. Тут правда, следует уточнить, что речь идет только о персонажах. Прочие элементы, теоретически могут иметь совпадающие имена. Но для них этот код не нужен\бесполезен.

З.Ы. Если уж и упарываться в логику, можно просто добавить игнор файлов, чьи имена уже есть в списке, с выводом предупреждения на экран. (Файл *имя файла*.nif уже есть в списке! Пропуск.)

Последний раз редактировалось Stalker_AleX333, 08-07-2018 в 19:02.


Отправлено: 18:54, 08-07-2018 | #6


Ветеран


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

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


Цитата Stalker_AleX333:
З.Ы. Если уж и упарываться в логику, можно просто добавить игнор файлов, чьи имена уже есть в списке, с выводом предупреждения на экран. (Файл *имя файла*.nif уже есть в списке! Пропуск.) »
Не-не-не. Реализовывать unique на пакетных файлах я точно не готов (оно, конечно, можно, но — нет). Либо Юниксовская uniq.exe, портированная на Windows, либо WSH/PowerShell.

Отправлено: 21:53, 08-07-2018 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Помогите создать Скрипт или bat-ник для создания ярлыков dima199dima Скриптовые языки администрирования Windows 2 04-10-2016 12:09
CMD/BAT - Bat-ник создания текстовика hancogruss Скриптовые языки администрирования Windows 6 19-09-2016 01:19
CMD/BAT - Bat'ник, который создает bat'ник и RDP ivanxam Скриптовые языки администрирования Windows 1 22-01-2016 14:10
CMD/BAT - [решено] Обработка файлов перетаскиваемых на bat-ник support23 Скриптовые языки администрирования Windows 3 26-05-2015 09:02
CMD/BAT - bat'ник переноса и разархивирования файлов So Sensually Скриптовые языки администрирования Windows 5 01-12-2011 16:32




 
Переход