Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] как сделать echo %%~nx (http://forum.oszone.net/showthread.php?t=339802)

shadowbat 23-03-2019 11:41 2864692

как сделать echo %%~nx
 
Как сделать, чтобы в консоль вывелась переменная, не её значение, а код переменной, текст "%%~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 2864694

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 2864695

Цитата:

Цитата sov44
так? »

нужно в этих строчках что-то изменить
Код:

rem %%~nx
echo %%~nx

что-то типа этого
Код:

rem ^%^%^~nx
echo ^%^%^~nx


Iska 23-03-2019 12:41 2864700

Цитата:

Цитата shadowbat
в консоль вывелась переменная »

Э… Имя переменной окружения?

megaloman 23-03-2019 12:42 2864701

shadowbat, Что такое
Цитата:

Цитата 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 2864707

Цитата:

Цитата megaloman
Если на консоли Вы хотите видеть именно "%%~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 2864721

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 2864724

Цитата:

Цитата shadowbat
хочу видеть текст "%%~nx" внутри цикла »

Цитата:

Цитата megaloman
В чём задача, кроме как отобразить именно строку "%%~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 2864730

Цитата:

Цитата megaloman
В чём задача, кроме как отобразить именно строку "%%~nx" в цикле? »

В этом и есть задача
Код:

Set "Var=%%%%~"
Отлично, красиво.

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

alpap 24-03-2019 00:39 2864814

Код:

@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 2864821

alpap, тут работает только первая строка из трёх?
в любом случае это третье решение задачи


даже обычный echo во второй строке почти получился:
Код:

cmd /c echo text %%%%^^%^^%~na text
      echo text %%%%^^%^^%~na text


alpap 24-03-2019 22:46 2864909

Цитата:

Цитата shadowbat
тут работает только ...»

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


Время: 14:23.

Время: 14:23.
© OSzone.net 2001-