PDA

Показать полную графическую версию : [решено] как сделать echo %%~nx


shadowbat
23-03-2019, 11:41
Как сделать, чтобы в консоль вывелась переменная, не её значение, а код переменной, текст "%%~nx":
в таком виде:
rem %%~nx
echo %%~nx
set var = file



pushd "C:\111"
for /f "delims=" %%x in ('dir /b/s/a-d "*.txt"') do (
rem %%~nx
echo %%~nx
set var = %%~nx
)
popd
pause

sov44
23-03-2019, 11:52
shadowbat, так?
pushd "C:\111"
for /f "delims=" %%x in ('dir /b/s/a-d "*.txt"') do (
rem %%~nx
echo %%~nx
set var = %%~nx
echo var=!var!
)
popd
pause

shadowbat
23-03-2019, 12:08
так? »
нужно в этих строчках что-то изменить
rem %%~nx
echo %%~nx
что-то типа этого
rem ^%^%^~nx
echo ^%^%^~nx

Iska
23-03-2019, 12:41
в консоль вывелась переменная »
Э… Имя переменной окружения?

megaloman
23-03-2019, 12:42
shadowbat, Что такое переменная, не её значение, а код переменной »
Нарисуйте ручками, приведите пример, что Вы хотите видеть на консоли?
Если на консоли Вы хотите видеть именно "%%~nx" то вне цикла (нет смысла в этом действии внутри цикла) @Echo Off
cls
Set "Var=%%%%~nx"
Echo "%Var%"
pause
Если хотите в цикле всё-таки видеть значение@Echo Off
cls
Set "Var=%%%%~nx"

for /f "delims=" %%x in ('dir /b/s/a-d "*.txt"') do (
Call Echo %%Var%%=%%~nx
)
pauseИли, для экзотичности, в цикле Call Echo %%Var%%=%Var%

shadowbat
23-03-2019, 13:11
Если на консоли Вы хотите видеть именно "%%~nx" (нет смысла в этом действии внутри цикла)
Нарисуйте ручками, приведите пример, что Вы хотите видеть на консоли?»
Именно, хочу видеть текст "%%~nx" внутри цикла в любом виде, будь то echo "%%~nx" или rem "%%~nx", 5 текстовых символов: "%%~nx", текстовую строку "%%~nx", string "%%~nx"
или такую строку буква в букву "текст текст %%~nx текст текст"

Это можно сделать только через такую переменную Var? А если три текстовых строки, то только Var1 Var2 Var3 ?
и только через Call Echo ? через rem никак не вывести такой текст "%%~nx" в консоль?

pushd "C:\111"
Set "Var1=%%%%~nx"
Set "Var2=%%%%~fx"
Set "Var3=%%%%~dx"
for /f "delims=" %%x in ('dir /b/s/a-d "*.txt"') do (
Call Echo %%Var1%% text %%Var2%% text %%Var3%%
rem %%Var1%% text %%Var2%% text %%Var3%%
)
pause

как вариант, конечно можно переменную внутри цикла поменять на i вместо x, но это слишком легко и не справляется с задачей (вывести текст "%%~nx" в цикле %%x)

pushd "C:\111"
for /f "delims=" %%i in ('dir /b/s/a-d "*.txt"') do (
rem %%%%~nx
echo %%%%~nx
set var = %%%%~nx
)
pause

megaloman
23-03-2019, 13:44
shadowbat, А зачем через rem? Это вообще не способ вывода чего-либо, это способ сделать строку неисполнимой. Не берусь предугадать, как там строка трансформируется. Какой смысл этих плясок? В чём задача, кроме как отобразить именно строку "%%~nx" в цикле?@Echo Off
cls
Set "Var=%%%%~"

for /f "delims=" %%x in ('dir /b/s/a-d "*.txt"') do (
Call Echo %%Var%%nx=%%~nx %%Var%%nxx=%%~nxx %%Var%%zx=%%~zx
)
pause

Iska
23-03-2019, 13:55
хочу видеть текст "%%~nx" внутри цикла »
В чём задача, кроме как отобразить именно строку "%%~nx" в цикле? »
shadowbat, ну, разбейте, например, вывод на две строки:
@echo off
setlocal enableextensions enabledelayedexpansion

pushd "C:\Мои проекты\0254" && (
for /f "delims=" %%x in ('dir /b /s /a:-d "*.txt"') do (
<nul set /p sVar=%%%%
echo ~nx = [%%~nx]
)

popd
)

endlocal
exit /b 0

shadowbat
23-03-2019, 14:08
В чём задача, кроме как отобразить именно строку "%%~nx" в цикле? »
В этом и есть задача
Set "Var=%%%%~"
Отлично, красиво.

Iska, благодарю за второе решение

alpap
24-03-2019, 00:39
@echo off
for /f "delims=" %%a in ('dir /a-d/b/s "*.txt"') do (
set "name=%%~na"
cmd /c echo var_for %%%%^^%^^%~na=%%~na
echo var %%name%%=%%~na
call echo zn [%%name%%]=%%~na
echo:
)
pause

shadowbat
24-03-2019, 05:29
alpap, тут работает только первая строка из трёх?
в любом случае это третье решение задачи
https://d.radikal.ru/d04/1903/68/ef77d66cef18.png

даже обычный echo во второй строке почти получился:
cmd /c echo text %%%%^^%^^%~na text
echo text %%%%^^%^^%~na text
https://a.radikal.ru/a10/1903/1e/c97e6dbb023a.png

alpap
24-03-2019, 22:46
тут работает только ...»
остально просто пример разных вариантов. У вас проблема была с выводом в цикле %%~na дословно и я показал (выделил красным) как это сделать, без всяких фантиков чистый дословный вывод в цикле: cmd /c echo %%%%^^%^^%~na




© OSzone.net 2001-2012