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

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

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

Аватара для minutka15

Пользователь


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

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


Появилась такая задача для которой необходим батник либо PowerShell который можно запустить как батник.
В директории C:\Users\Имя\AppData\Roaming\MyPrograms
имеются н-ное количество папок с различными именами и в каждой папке по одному "*.exe" файлу. Имена у всех *.exe будут разные.
После запуска скрипта нужно в папке C:\Users\Имя\AppData\Roaming\MyPrograms создать текстовые файлы с именами папок со следующим содержанием.

Код: Выделить весь код
[ENGINE]
Name=тут имя *.exe файла без расширения .ехе
Author=Developer
Filename= тут полный путь где находится сам *.exe файл например C:\Users\имя\AppData\Roaming\MyPrograms\Folder\name.exe
Буду очень признателен за помощь.

-------
We don't call 911


Отправлено: 17:56, 18-12-2022

 

Аватара для minutka15

Пользователь


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

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


После долгих мучений смог пройти пол пути:
Код: Выделить весь код
@echo off
set "src=%APPDATA%\MyPrograms"
set "dest=%APPDATA%\MyPrograms"
set "files=*.exe"
set "saveto=.txt"
2>nul (md "%dest%"
for /f "delims=" %%i in ('dir/ad/b "%src%"') do >"%dest%\%%i%saveto%" dir/a-d/b/s "%src%\%%i\%files%")
exit
Tекстовые файлы создаются с учетом их присутствия в папках таким образом:
C:\Users\имя\AppData\Roaming\MyPrograms\FolderName\FileName.exe
мне необходимо что-бы в начале пути стояло:
Filename=C:\Users\имя\AppData\Roaming\MyPrograms\FolderName\FileName.exe
и еще прописать в каждом создаваемом файле в самом верху
[ENGINE]
а потом уже
Filename=C:\Users\имя\AppData\Roaming\MyPrograms\FolderName\FileName.exe

Может кто выручить ?

-------
We don't call 911


Отправлено: 22:42, 21-12-2022 | #2



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

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


Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off
cls
>nul chcp 1251
	Set "BoxIn=%APPDATA%\MyPrograms"
	Set "Mask=*.exe"
	Set "Ext=txt"

	If Not Exist "%BoxIn%\" (Echo "%BoxIn%" Not found &Pause &Exit /B 2)

	For /D %%d In ("%BoxIn%\*.*") Do (
		For %%f In ("%%d\%Mask%") Do (
			>"%BoxIn%\%%~nxd.%Ext%" (
				Echo [ENGINE]
				Echo %%~nf
				Echo Author=Developer
				Echo Filename=%%f
			)
		)
	)
pause
Exit /B

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

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:59, 22-12-2022 | #3


Аватара для minutka15

Пользователь


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

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


Вот супер!

тут дописал
Echo [ENGINE]
Echo Name=%%~nf
Echo Author=Developer
Echo Filename=%%f

Получилось именно то что было задумано!
Благодарю!

-------
We don't call 911


Отправлено: 17:26, 22-12-2022 | #4


Аватара для minutka15

Пользователь


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

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


Цитата megaloman:
@Echo Off
cls
>nul chcp 1251
Set "BoxIn=%APPDATA%\MyPrograms"
Set "Mask=*.exe"
Set "Ext=txt"
If Not Exist "%BoxIn%\" (Echo "%BoxIn%" Not found &Pause &Exit /B 2)
For /D %%d In ("%BoxIn%\*.*") Do (
For %%f In ("%%d\%Mask%") Do (
>"%BoxIn%\%%~nxd.%Ext%" (
Echo [ENGINE]
Echo %%~nf
Echo Author=Developer
Echo Filename=%%f
Echo [OPTIONS]
Echo UCI_Chess960=true
)
)
)


pause
Exit /B »

Уважаемый megaloman
Скрипт работает на ура но если возможно его доработать было-бы супер.
Вот эта строка Echo Filename=%%f создает небольшую проблему а именно:
в полученном файле появляется весь путь от ехе-шника а хотелось бы урезать следующим образом:
К примеру с этим батником я получаю результат

Код: Выделить весь код
[ENGINE]
Name=Weiss 2.1 pext
Author=Developer
Filename=C:\Users\имя\AppData\Roaming\ChessBase\Engines.UCI\Weiss_2.1\Weiss 2.1 pext.exe
[OPTIONS]
UCI_Chess960=true
а хотелось бы укоротить строчку таким образом:
Код: Выделить весь код
Filename=.\Weiss_2.1\Weiss 2.1 pext.exe
Я могу делать так: Echo Filename=.\Weiss_2.1\%%~nf.exe и получаю что хочу, однако имена папок всегда разные.
Как бы определить и прописать путь только той папки где лежит .exe файл?

-------
We don't call 911


Отправлено: 17:11, 14-04-2024 | #5


Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off
cls
>nul chcp 1251
	Set "BoxIn=%APPDATA%\MyPrograms"
	Set "Mask=*.exe"
	Set "Ext=txt"

	If Not Exist "%BoxIn%\" (Echo "%BoxIn%" Not found &Pause &Exit /B 2)

	For /D %%d In ("%BoxIn%\*.*") Do (
		For %%f In ("%%d\%Mask%") Do (
			>"%BoxIn%\%%~nxd.%Ext%" (
				Echo [ENGINE]
				Echo Name=%%~nf
				Echo Author=Developer
				Echo Filename=.\%%~nxd\%%~nxf
			)
		)
	)
pause
Exit /B

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


Отправлено: 20:18, 14-04-2024 | #6


Аватара для minutka15

Пользователь


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

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


megaloman,

Отлично.
Я всякий раз после запуска скрипта в ручную редактировал эту строчку в сотнях файлов.
Огромное спасибо!

-------
We don't call 911


Отправлено: 20:42, 14-04-2024 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - bat создание папок и подпапок с файлами с именами из определенных символов Gutt Скриптовые языки администрирования Windows 1 28-09-2018 22:02
PowerShell - [решено] Создание папок с именами сотрудников, используя «Powershell» boffin2 Скриптовые языки администрирования Windows 2 29-02-2016 08:57
CMD/BAT - Создание папок и файлов со с случайными именами. Kirstem Скриптовые языки администрирования Windows 0 26-04-2015 20:06
CMD/BAT - [решено] Создание папок по дате получения файлов и перемещение в них файлов KamikadZZe Скриптовые языки администрирования Windows 1 01-09-2011 14:15
Прочие - Создание образа из текстовых файлов samurai Программное обеспечение Windows 3 23-04-2009 21:24




 
Переход