[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
aa
столкнулся с задачей:
есть папка, в ней несколько файлов с определенным расширением (но могут быть и другие, например текстовый с описанием).
нужно выполнить команду с этими файлами, но не по отдельности а сразу со всеми, т.е это должно выглядеть так:
команда file1.ext file2.ext file3.ext ...
у меня получилось примерно вот это:
cd /d "folder"
SetLocal EnableDelayedExpansion
set stroka=& for %%A in (*.ext) do set "stroka=!stroka! %%~A"
set "stroka=%stroka:~1%"
%comanda% %stroka%
EndLocal
но ввиду моего малого опыта в подобных делах, меня не покидают подозрения, что это можно решить как-то проще или правильнее, возможно без EnableDelayedExpansion...

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 2 месяца
  • Сообщений: 3608
  • Репутация:127

    [+] [-]
cartmenezz, это правильное решение. Но можно и без EDE:
for %%a in (*.ext) do call set "stroka=%%stroka%% %%~a"

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
Ander_73, Большое спасибо, а задвоенные знаки процента вокруг переменной stroka это следствие использования call ?
PS: начал читать про это, на ss64 вообще пример с затроенным знаком процента, буду вникать))

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 2 месяца
  • Сообщений: 3608
  • Репутация:127

    [+] [-]
85360а задвоенные знаки процента вокруг переменной stroka это следствие использования call
Это чтобы произошло "раскрытие" переменной внутри неявного вызова процедуры (call). Лучше почитать на форумах, я не смогу объяснить толком.
Внутри call можно писать и обычные %. Стандартный пример (удалить из строки %var% подстроку %del%):
call set var=%%var:%del%=%%
Обычно для таких вещей применяют EDE. Но можно и так, если очень хочется.
---
"Это нэлзя понять, это можно толко запомныт!" (с)

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
85370Это нэлзя понять, это можно толко запомныт!
вот и я так подумал)) ещё раз спасибо за разъяснения

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 2 месяца
  • Сообщений: 3608
  • Репутация:127

    [+] [-]
cartmenezz, вот тебе для взрыва мозга примерчик. Я использовал в WInst, например.
Запишем в файл tst строку:
Windows folder is %windir%
Выполним код:
@echo off
<tst set /p var=
echo %var%
call set var=%var%
echo %var%
Получим текст:
Windows folder is %windir%
Windows folder is C:\Windows
Неплохой трюк для файлов конфигураций, в которых можно использовать переменные среды, например.

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
Ander_73, ну тут я в принципе понял что происходит, вы ведь мне как-то уже втолковывали засчет чего работает трюк с <nul set /p, может и не всё до меня дошло, но то что там берется первая строка из файла, я вроде запомнил.
получается берется строка в исходном виде, а при переназначение %windir% уже раскрывается...
выходит при считывании из файла, не происходит раскрытие переменных? они как бы и не воспринимаются как переменные? просто как текст?

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 2 месяца
  • Сообщений: 3608
  • Репутация:127

    [+] [-]
85373при считывании из файла, не происходит раскрытие переменных?
А с чего бы вдруг? Мы считываем текст и он может быть любым. В том числе с символами % и ты ды.

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
Ander_73, понятненько, просто как-то не приходилось об этом задумываться

[Цитировать]

    ttng
  • 20627
  • Стаж: 5 лет
  • Сообщений: 50
  • Репутация:1

    [+] [-]
WGordy26, нет, мне нужна была не инсталляция, а инициализация. Но всё равно спасибо, мож и это когда-нить пригодится)))

  • -746
Сообщения из этой темы были выделены в отдельный топик Очистка системы с помощью ком. строки
sergeysvirid

[Цитировать]

    rezorustavi
  • 2337
  • Стаж: 8 лет 3 месяца
  • Сообщений: 928
  • Репутация:55

    [+] [-]
  • Откуда: Грузия, город Рустави
Друзья, кто сможет, проверьте пожалуйста и отпишитесь. У меня нет иконок с битым кэшем, проверить не могу, а этот вариант очень заинтересовал.
Как в Windows 10 быстро сбросить кэш иконок без перезапуска Проводника и сторонних утилит. Cпособ исправить проблемы с некорректным отображением иконок. О нём мало кто знает, но он столь же эффективен, как и прочие способы, а самое главное он не требует ни перезапуска Проводника, ни использования сторонних утилит. Батник:
ie4uinit -show
Источник


Последний раз редактировалось: rezorustavi (2021-09-29 11:57), всего редактировалось 1 раз

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
похоже наткнулся на какую-то странную пасхалку в винде (по крайней мере в Win10) an
на работе частенько приходится вводить пароли, которые фиг запомнишь (при этом необходимость конфиденциальности под большим вопросом), я себе на них сделал ярлыки с быстрым запуском, запрятал их немного. и до недавнего времени не знал горя - нажал нужное сочетание клавиш, пароль скопировался в буфер, я его вставил.
в ярлыке прописана такая команда:
C:\Windows\System32\cmd.exe /c echo|set /p=MyPassWord| Clip
но блин, обзавелся я паролем "h848h547", сделал как обычно ярлык:
C:\Windows\System32\cmd.exe /c echo|set /p=h848h547| Clip
и после вставки получаю китайские иероглифы))
㡨㠴㕨㜴
что за дичь такая?)) интересненько))

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 2 месяца
  • Сообщений: 3608
  • Репутация:127

    [+] [-]
85632echo|set /p=
Мне тоже дико интересно, что даёт такая конструкция?
Просто
echo h848h547| clip
не проще?

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
85634Мне тоже дико интересно, что даёт такая конструкция?
если память не изменяет, вы мне ее и посоветовали))
(хотя может и нагуглил)
так как "echo Pass| clip" добавляет перенос строки
... в любом случае, до этого что только не вводил, все нормально копировалось, а в "h848h547" видимо закодировано какое-то китайское послание... может там человека в подвале на фабрике удерживают, заставляют кодить на Майкрософт, надо разобраться))

Страница 48 из 89


Показать сообщения:    

Текущее время: 24-Апр 06:05

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы