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

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

Ответить
Настройки темы
CMD/BAT - Как взять в цикл FOR имена изнутри самого исполняемого CMD

Аватара для alexys2004

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


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

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


Здравия всем!
Уважаемые знатоки, требуется ваша помощь!
Есть стандартный цикл, который берёт из внешнего файла имена и записывает их в другой файл!
Пока этих файлов была пара, было терпимо, а теперь россыпь из десятка файлов начинает раздражать!
Возможно ли сделать так, чтобы цикл брал имена из списка внутри самого исполняемого CMD ?
Например, цикл обращается к некоему списку имён, который прячется в конце файла после EXIT и дальше записывает их во внешний файл..

PHP код: Выделить весь код

SET NAME=:список
FOR /"usebackq tokens=* delims=" %%i IN ("%NAME%") DO (ECHO %%i>> файл.txt)
EXIT

:
список откуда брать имена
ИМЯ1
ИМЯ2
ИМЯ3 

Крайне благодарен, если есть решение!

-------
Компьютерная помощь в Симферополе! vk.com/kp_pro


Отправлено: 07:07, 11-04-2025

 

Аватара для alexys2004

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


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

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


DJ Mogarych,
Цитата DJ Mogarych:
Powershell, запрос номера списка и вывод в файл. »
немного не то! да и Powershell я совсем плохо понимаю..

megaloman,
это прям КРУТО!
только я не совсем ещё понял, как это работает..
надо разобраться, как записывать не все файлы сразу, а нужный в конкретный момент..
можно я попробую разобраться и ещё раз Вас спрошу, если понадобится?

megaloman,
если я правильно понял, цикл

PHP код: Выделить весь код

For /"usebackq tokens=1* delims=:" %%i IN (`FindStr /R /N /C:"^:@S" "%~dpnx0"`) Do Call :Out %%%%

находит все @S, вызывает функцию, которая записывает найденные имена в файлы, которые созданы строкой выше?

а если в конкретный момент времени мне надо записать имена из конкретного списка в конкретный файл, то мне достаточно только самой функции :Out без перебора всех списков в цикле? только нужно подставить конкретные имена вместо переменных в этот цикл, опустив предыдущие 2 цикла перебора файлов и списков?

PHP код: Выделить весь код

Call Set "OutFile=%%%2%%"
    
For /"usebackq delims=" %%s IN (`More +%1 "%~dpnx0"`) Do (
        Echo 
"%%s"|>nul Find ":@S"&&Exit /B
        
>>"%BoxOut%\%OutFile%" Echo %%

-------
Компьютерная помощь в Симферополе! vk.com/kp_pro


Последний раз редактировалось alexys2004, 12-04-2025 в 06:45.


Отправлено: 06:28, 12-04-2025 | #11



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

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


Аватара для alexys2004

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


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

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


megaloman,

сократил вот так:

PHP код: Выделить весь код

@Echo Off &Cls
    Set 
"BoxOut=D:\Box_Out"

    
For /"usebackq tokens=1* delims=:" %%i IN (`FindStr /R /N /C:"^:@S1" "%~dpnx0"`) Do Call :Out %%%%j
Pause
Exit /B

:Out
    
For /"usebackq delims=" %%s IN (`More +%1 "%~dpnx0"`) Do (
        Echo 
"%%s"|>nul Find ":@S"&&Exit /B
        
>>"%BoxOut%\list1.txt" Echo %%s
    
)
Exit /
B

:@S1
C
:Program Files1 skjhdk kslhjdljsl sl;djl;jlsjd.txt
C
:Program FilesAdvanced IP Scanner2 sslm jds;lldalj;al lajl;akjsl;ka.png
C
:Program Files (x86)3 aklljalkjs akjslkajlasjl akljlakjljs.dbf

:@S2
C
:Program Files4 adSA SDASD DADADD.xls
C
:Program Files (x86)5 aSDFDSA CSAS SAASAS.doc 

как ещё я могу сократить? например, чтобы вообще без вызова функции? я буду передавать название списка и внешнего файла двумя переменными.

-------
Компьютерная помощь в Симферополе! vk.com/kp_pro


Отправлено: 07:04, 12-04-2025 | #12


Deadooshka


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

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


Цитата alexys2004:
FindStr*/R*/N*/C:"^:@S1 »
насколько понял, ищется в этом файле скрипта строка содержащая ":@S" (заголовок списка), и в функцию передаётся номер строки и сама строка целиком (вывод FindStr, разделённый по delim). Дальше more позволяет начать чтение файла с этого номера строки. Чтобы конкретизировать список нужно передать в FindStr более конкретный заголовок списка, а не :@S.

Отправлено: 10:47, 12-04-2025 | #13


Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off &Cls
	If Not "%~1"=="" If Not "%~2"=="" GoTo :Begin
		Echo The script arguments must contain the name of the list and the name of the output file!
		Echo Script terminated! &Pause &Exit /B 2
	:Begin
		If Not Exist "%~dp2" (Echo Folder "%~dp2" not found &Pause &Exit /B 2) Else (2>nul Del "%~dpnx1")
		Set /A n=-1
		For /f "usebackq tokens=1* delims=:" %%i IN (`FindStr /I /R /N /C:"^:%~1$" "%~dpnx0"`) Do Set /A n=%%i
		If %n% LSS 0 (Echo List "%~1" not found &Pause &Exit /B 2)
		For /f "usebackq delims=" %%s IN (`More +%n% "%~dpnx0"`) Do (
			Echo "%%s"|>nul Find /I ":@S"&&(Pause &Exit /B)
			>>"%~2" Echo %%s
		)
Pause
Exit /B

:@S1
C:\Program Files\1 skjhdk kslhjdljsl sl;djl;jlsjd.txt
C:\Program Files\Advanced IP Scanner\2 sslm jds;ll; dalj;al lajl;akjsl;ka.png
C:\Program Files (x86)\3 aklljalkjs akjslkajlasjl akljlakjljs.dbf

:@S2
C:\Program Files\4 adSA SDASD DADADD.xls
C:\Program Files (x86)\5 aSDFDSA CSAS SAASAS.doc

:@S12345
8 adSA SDASD DADADD.xls
9 aSDFDSA CSAS SAASAS.doc

:@S3
C:\Program Files (x86)\6 adSA SDASD DADADD.xls
C:\Program Files\7 aSDFDSA CSAS SAASAS.doc
Имя списка и выходной файл передаются в аргументах.

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


Отправлено: 11:08, 12-04-2025 | #14



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Переопределить вывод внутри самого файла CMD El Scorpio Скриптовые языки администрирования Windows 3 01-11-2022 22:07
CMD/BAT - Запуск исполняемого файла (EXE) через скрипт CMD с вводом параметров dm7203 Скриптовые языки администрирования Windows 1 01-11-2018 18:24
CMD/BAT - [решено] как запустить cmd на удаленной машине чтобы cmd отобразилось у меня Mickle Скриптовые языки администрирования Windows 13 21-09-2010 14:43
Интерфейс - Как посмотреть версию исполняемого файла с произвольным расширением Vic21 Microsoft Windows 7 2 16-11-2009 15:12
CMD/BAT - [решено]*.cmd: цикл перебирает значения и каждое значение проверяется skeletor Скриптовые языки администрирования Windows 1 15-03-2007 16:11




 
Переход