如何在字符串中使用调用回显
How to use call echo in a string
我正在使用一个菜单,并且想写入一个在下拉列表中具有选定名称的文件。除了文件名不正确外,它工作正常。
它正在将其命名为“ws-%Name[2]%”,但没有输入正确的值。
我该如何解决这个问题?感谢您的帮助
ECHO OFF
CLS
:MENU
ECHO.
ECHO ...............................................
ECHO Select Postroom staff:-
ECHO ...............................................
ECHO.
set "Name[1]=Diana Mckinley"
set "Name[2]=Lenka Smolkova"
set "Name[3]=Louise Smith"
set "Name[4]=Sally Baldwin"
set "Name[5]=Sally Faulkner"
set "Name[6]=Sarah Kendle"
set "Name[7]=Sophie Jennings"
set "Name[8]=Steven Caylor"
:MenuLoop
set /a "x+=1"
if defined Name[%x%] (
call echo %x%. %%Name[%x%]%%
goto MenuLoop
)
ECHO.
SET /P index=Type KEY then press ENTER to register:
call echo %%Name[%index%]%% is now registered
call echo %%Name[%index%]%% > "C:\Users\karim ali\Documents\Test\ws-%%Name[%index%]%%.txt"
GOTO MenuLoop
嵌套变量的扩展可能令人困惑...
而不是ws-%%Name[%index%]%%.txt
,写ws-%Name[%%index%%]%.txt
您需要做的就是将该名称和索引设置为变量并使用它。
下面是一个示例,为了演示目的做了一些改动:
@ECHO OFF
SET "Name[1]=Diana Mckinley"
SET "Name[2]=Lenka Smolkova"
SET "Name[3]=Louise Smith"
SET "Name[4]=Sally Baldwin"
SET "Name[5]=Sally Faulkner"
SET "Name[6]=Sarah Kendle"
SET "Name[7]=Sophie Jennings"
SET "Name[8]=Steven Caylor"
:MENU
CLS
ECHO.
ECHO ...............................................
ECHO Select Postroom staff:-
ECHO ...............................................
ECHO.
:MenuLoop
FOR /F "TOKENS=2-3 DELIMS==[]" %%A IN ('SET Name[') DO (
CALL ECHO %%A. %%Name[%%A]%%)
ECHO.
SET /P index=Type KEY then press ENTER to register:
CALL SET "PRSName=%%Name[%index%]%%"
ECHO.
ECHO %PRSName% is now registered
TIMEOUT 2 /NOBREAK 1>NUL
ECHO %PRSName%>"C:\Users\karim ali\Documents\Test\ws-%PRSName%.txt"
SET "Name[%index%]="
SET Name[>NUL 2>&1&&(GOTO :MENU)
我正在使用一个菜单,并且想写入一个在下拉列表中具有选定名称的文件。除了文件名不正确外,它工作正常。
它正在将其命名为“ws-%Name[2]%”,但没有输入正确的值。 我该如何解决这个问题?感谢您的帮助
ECHO OFF
CLS
:MENU
ECHO.
ECHO ...............................................
ECHO Select Postroom staff:-
ECHO ...............................................
ECHO.
set "Name[1]=Diana Mckinley"
set "Name[2]=Lenka Smolkova"
set "Name[3]=Louise Smith"
set "Name[4]=Sally Baldwin"
set "Name[5]=Sally Faulkner"
set "Name[6]=Sarah Kendle"
set "Name[7]=Sophie Jennings"
set "Name[8]=Steven Caylor"
:MenuLoop
set /a "x+=1"
if defined Name[%x%] (
call echo %x%. %%Name[%x%]%%
goto MenuLoop
)
ECHO.
SET /P index=Type KEY then press ENTER to register:
call echo %%Name[%index%]%% is now registered
call echo %%Name[%index%]%% > "C:\Users\karim ali\Documents\Test\ws-%%Name[%index%]%%.txt"
GOTO MenuLoop
嵌套变量的扩展可能令人困惑...
而不是ws-%%Name[%index%]%%.txt
,写ws-%Name[%%index%%]%.txt
您需要做的就是将该名称和索引设置为变量并使用它。
下面是一个示例,为了演示目的做了一些改动:
@ECHO OFF
SET "Name[1]=Diana Mckinley"
SET "Name[2]=Lenka Smolkova"
SET "Name[3]=Louise Smith"
SET "Name[4]=Sally Baldwin"
SET "Name[5]=Sally Faulkner"
SET "Name[6]=Sarah Kendle"
SET "Name[7]=Sophie Jennings"
SET "Name[8]=Steven Caylor"
:MENU
CLS
ECHO.
ECHO ...............................................
ECHO Select Postroom staff:-
ECHO ...............................................
ECHO.
:MenuLoop
FOR /F "TOKENS=2-3 DELIMS==[]" %%A IN ('SET Name[') DO (
CALL ECHO %%A. %%Name[%%A]%%)
ECHO.
SET /P index=Type KEY then press ENTER to register:
CALL SET "PRSName=%%Name[%index%]%%"
ECHO.
ECHO %PRSName% is now registered
TIMEOUT 2 /NOBREAK 1>NUL
ECHO %PRSName%>"C:\Users\karim ali\Documents\Test\ws-%PRSName%.txt"
SET "Name[%index%]="
SET Name[>NUL 2>&1&&(GOTO :MENU)