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

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

    [+] [-]
cartmenezz, сперва малодушно написал: "нет, не смог... опять не смог..."
А потом собрался - и смог! Нетряпка!
@echo off
for /f %%a in ('echo prompt $H ^| cmd') do set "del=%%a"
set /p "var=%del%   Enter: "
Но это, конечно, изврат и гнусный обман простодушного Комманд Ком-а ag

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

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

    [+] [-]
  • Откуда: Калининград
Ander_73, ух!)) как говорится нет ничего невозможного)) но конечно, я когда спрашивал, думал есть варианты попроще, не предполагал что придется изобретать))
Большое спасибо!
PS:
set /p "var=%del% Enter: " я кстати тоже пробовал, только в переменную %del% наивно пытался пробел предварительно записать (хотя это наверное то же самое что просто пробел написать... но надежда умирает последней))
и ещё пробовал: set /p "var=$S Enter: "
(подсмотрел, кстати в аннотации к Prompt, вспомнил что там были всякие такие штуки, для вывода символов, надеялся что и пробел так вывести можно)..
...
я правильно понял, в вашем решении в переменную попадает символ удаления, и PromptString его "засчитывает" за видимый символ, и последующие пробелы уже не воспринимает как пробелы в начале строки и поэтому они не отсекаются?


Последний раз редактировалось: cartmenezz (2021-05-05 22:45), всего редактировалось 2 раз(а)

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

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

    [+] [-]
cartmenezz, можно проще - первым символом прописать 0х7 (BEL). Но будет пищать спикером.

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

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

    [+] [-]
  • Откуда: Калининград
Ander_73, а нет символа, который отвечает за то чтобы ничего не делать? ag

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

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

    [+] [-]
85315в вашем решении в переменную попадает символ удаления, и PromptString его "засчитывает" за видимый символ, и последующие пробелы уже не воспринимает как пробелы в начале строки и поэтому они не отсекаются?
Бинго!
а нет символа, который отвечает за то чтобы ничего не делать?
Почему бы тебе самому не поискать? Смысл игры ты уже понял ab

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

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

    [+] [-]
  • Откуда: Калининград
85318Почему бы тебе самому не поискать? Смысл игры ты уже понял
для начала пытаюсь разобраться, как вообще выводить ASCII символы в cmd (0х7 ведь из этой оперы?).
можно проще - первым символом прописать 0х7 (BEL)
уже не кажется что это действительно проще, ну или я не в той степи ищу))
... да в приципе, предложенный вами вариант с символом Backspace вполне устраивает, еще раз спасибо

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

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

    [+] [-]
cartmenezz, я пользуюсь Far Manager и в нём, чтобы прописать в батнике символ 0х7, я нажимаю Ctrl+Q Ctrl+G
В тексте это выглядит примерно так:
set /p "var=•  Enter: "

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

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

    [+] [-]
  • Откуда: Калининград
Ander_73, Благодарю

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

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

    [+] [-]
  • Откуда: Калининград
Ander_73, еще порылся, поискал, наткнулся вот на этот пост:
https://stackoverflow.com/a/28133147
(и позже еще на кучу дублей на других сайтах, на stackoverflow, как я понял, оригинал)
Там использовали редактор EDIT (из DOS).
К сожалению файлик SET_with_backspace_char.txt (с символом Backspace) я скачать не смог, искал его по сети (как раз тогда и обнаружились дубли), но везде была та же ссылка.-В итоге все оказалось проще, достаточно было AkelPad, которым я итак пользуюсь:
1. просто ввел символ BACKSPACE с помощью комбинации Alt+8
2. Сохранил в кодировке 866 (OEM)
* сначала сохранял в 1251 (ANSI), которая стояла по умолчанию - Не прокатило:
* в обоих вариантах (866/1251) было предупреждение о том, что символ будет утерян, и после сохранения символ менял вид (но на разный).
* но после сохранения в 1251 он был виден в консоли, а после сохранения в 866 - нет
* после сохранения в 866, и пересохранения в 1251/1252 символ не менялся и оставался невиден в консоли (видимо, главное изначально в 866 сохранить)
@echo off
set /p "var=  Enter: "
--PS: правда нигде кроме Win10 не проверял
UPD: проверил из-под WinPE (win8, win7, winServ2003) - все норм, наверное и с XP проблем бы не было

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

    UserX
  • 667
  • Стаж: 9 лет
  • Сообщений: 795
  • Репутация:32

    [+] [-]
cartmenezz, а с помощью шестнадцатеричного редактора было бы не проще поменять любые символы на нужные вам?

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

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

    [+] [-]
cartmenezz, UserX, вставить в текст "левый" символ - легко. Как потом с таким текстом работать? Первое же сохранение "съест" все такие художества. А использовать "особливый" редактор - это обрекать свои проекты на изоляцию. Как публиковать такие тексты в сети, например?

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

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

    [+] [-]
  • Откуда: Калининград
UserX, наверное ah
я в процессе поиска про него вспоминал, но тогда я пробовал просто из бинарника вытащить символ "пустоты", получил на выходе MZ` и забил на это., а пропечать в нем 08 не подумал
Добавлено через 17 минут 46 секунд:
Ander_73, ну, поидее даже без спецсимволов обычным блокнотом, как правило, батники не редактируют. напримр если нужна кирилица, то уже придется пользоваться каким-нибудь редактором. Впрочем, я с вами согласен
но конкретно с этим символом, вроде все ОК - попробовал его копировать/вставлять (и делать другие изменения в батнике) в обычном блокноте - проблем не появилось

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

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

    [+] [-]
85337но конкретно с этим символом, вроде все ОК - попробовал его копировать/вставлять (и делать другие изменения в батнике) в обычном блокноте - проблем не появилось
Щикарно! (с)
Давай, опубликуй здесь, в сообщении, кусок текста с этим "беспроблемным" символом.

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

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

    [+] [-]
  • Откуда: Калининград
Ander_73, ну выше опубликовал, под тегом "код" правда))
проверка: set /p "var= Enter: "
по крайней мере Chrome нормально видит, пробовал копировать - все норм

Добавлено через 6 минут 18 секунд:
вот эта конструкция:
for /f %%a in ('echo prompt $H ^| cmd') do set "del=%%a"
set /p "var=%del%   Enter: "
мне понравилась больше, поиск символа это уже так.. ради интереса...
единственное, хотел уточнить не будет ли заметной задержки при прорисовывании в консоли (на слабом ПК)? сейчас для тестов только один комп, и на нем SSD.. (хотя, можно конечно строку с присвоением значения %del% вынести в начало скрипта, тогда точно заметной разницы не будет)

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

    UserX
  • 667
  • Стаж: 9 лет
  • Сообщений: 795
  • Репутация:32

    [+] [-]
85338Давай, опубликуй здесь, в сообщении, кусок текста с этим "беспроблемным" символом.
Известное "видит око, да зуб неймёт" трансформируется в "не видит око, да зуб... ймёт!" ab

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


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

Текущее время: 20-Апр 19:16

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


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