Windows 基于给定的字符串列表创建编号列表

Windows 基于给定的字符串列表创建编号列表,windows,loops,batch-file,command-line,cmd,Windows,Loops,Batch File,Command Line,Cmd,windows命令批处理 我有一个如下所示的文本文件: Dog Cat Frog Bat Bird Mouse 我想给每一个字符串、每一行赋予一个数字 使它成为 1 Dog 2 Cat 3 Frog 4 Bat 5 Bird 6 Mouse 然后我想让用户输入一个数字,然后将相应的字符串存储在变量中 @echo off set TEXT_T="list.txt" set /a c=0 setlocal ENABLEDELAYEDEXPANSION FOR /F "tokens=1 us

windows命令批处理

我有一个如下所示的文本文件:

Dog
Cat
Frog
Bat
Bird
Mouse
我想给每一个字符串、每一行赋予一个数字

使它成为

1 Dog
2 Cat
3 Frog
4 Bat
5 Bird
6 Mouse
然后我想让用户输入一个数字,然后将相应的字符串存储在变量中

@echo off
set TEXT_T="list.txt"

set /a c=0

setlocal ENABLEDELAYEDEXPANSION

FOR /F "tokens=1 usebackq" %%i in (%TEXT_T%) do (
  set /a c=c+1

  echo !c! %%i 
)
endlocal
pause
因此,如果用户输入1,则变量设置为字符串Dog
因此,当用户输入1时,程序存储/输出狗

set/p var1=“number?”
因此var1成为字符串,而不是数字

这完成了任务的第一部分,但现在我需要第二部分,将字符串存储在一个变量中

@echo off
set TEXT_T="list.txt"

set /a c=0

setlocal ENABLEDELAYEDEXPANSION

FOR /F "tokens=1 usebackq" %%i in (%TEXT_T%) do (
  set /a c=c+1

  echo !c! %%i 
)
endlocal
pause
下面是一个更新的答案,感谢LotPings

通过一个小的调整,可以通过字符串请求文件夹

这为使用CMD中的Megatools提供了一种更简单的方法


编辑:必须将
%Link%
修剪为仅第一个单词,即仅链接

Megals-e/Root/misc
的输出如下所示: 星号是文件的唯一链接ID

                                                    /Root/misc
   https://mega.nz/#!********!********************* /Root/misc/File1
   https://mega.nz/#!********!********************* /Root/misc/File2
   https://mega.nz/#!********!********************* /Root/misc/File3
使用上面的批处理脚本,它看起来像:

1 File1
2 File2
3 File3
Select #:  <------input file number 
然后,选择的文件号作为相应的链接传递到
Magadl
Megadl链路

批处理脚本允许您只需输入相应的文件号即可下载链接,这样您就不必在标准cmd窗口中键入长链接id。

只需使用数组:

@echo off
setlocal ENABLEDELAYEDEXPANSION

set TEXT_T="list.txt"

set /a c=0

FOR /F "tokens=1 usebackq" %%i in (%TEXT_T%) do (
  set /a c=c+1
  echo !c! %%i 
  set string[!c!]=%%i
)

set /P number=Enter number:
echo !string[%number%]!

pause

有关更多详细信息,请参见。

如何将命令的输出设置为列表,而不是将文本文件设置为列表

因此,这里带有var1的行将转换为一个编号列表(该目录中列出的文件),Var2是用户输入的数字,用于创建传递给命令的返回字符串。i、 e

这会杀死链接的第一部分,因为它会删除链接之间的所有内容,包括感叹词!dasasdasd

所有超级链接都以#开头!什么

直接使用megals输出并避免延迟扩展(这会删除

Findstr/n将进行编号

@echo off
for /f "tokens=1,* delims=:" %%A in ('megals -e /Root/ ^|findstr /n "." ') do (
  set Item[%%A]=%%B
  Echo %%A %%B
)
set /p choice=Select #:
Call Echo Choice:%%Item[%choice%]%%
使用双倍百分号的(伪)调用是实现延迟扩展的一种老式方法,而不会出现
问题

在编程/脚本编写中,您需要调整技术以满足您的需要

不知道megatools的确切输出,
这可以做到:

@echo off
for /f "tokens=1,* delims=:" %%A in ('megals -e /Root/ ^|findstr /n "." ') do (
  set Folder[%%A]=%%B
  Echo %%A %%B
)
set /p choice=Select #:
Call Set Folder=%%Folder[%choice%]%%

for /f "tokens=1,* delims=:" %%A in ('megals -e %Folder% ^|findstr /n "." ') do (
  set Link[%%A]=%%B
  Echo %%A %%B
)
set /p choice=Select #:
Call Set Link=%%Link[%choice%]%%

megadl %Link%
按照COMO的建议,请您的问题包含所有必要的信息-不要强迫他人从不必要的答案和评论中收集信息。

这不起作用

我需要将Call Echo%%项目[%choice%]%%的输出传递给Megadl

@echo off
for /f "tokens=1,* delims=:" %%A in ('megals -e /Root/anime ^|findstr /n "." ') do (
set Item[%%A]=%%B
Echo %%A %%B
)
set /p choice=Select #:
Call Echo %%Item[%choice%]%%

for /F "tokens=*" (`%%Item[%choice%]%%`) do (
set "var1=%%A"
Megadl !Var1!
)
pause

请将您编写或尝试过的代码包括在内(这不是免费的代码订购服务)。另外,请阅读如何正确提问。请务必使用、阅读并运行
choice/?
,同时搜索此网站以查找您菜单问题的现有答案。如何编号:
find/N/V”““list.txt”
findstr/N/R“^”“list.txt”
?谢谢,太好了。我还想知道如何从命令输出中读取而不是从txt文件中读取。只需将命令括在撇号之间:
FOR/F“tokens=1”%%I in('TYPE%TEXT_T%')do(
无需对
var1
变量使用延迟扩展。@JimJamil,
megals-e/Root/directory
的内容是否与原始的
list.txt
文件显示的内容完全相同?如果不是,请编辑您的问题,以提供新的要求和该命令的内容。这是一个megalinks列表,一对一line@JimJamil,它没有显示输出,如果您需要在菜单和相关变量系统中使用它的解析建议,我需要查看它。Megals-e/Root/anime的输出是一个链接列表,因为某些原因,每个链接前面都有四个空白列。我仍然需要给MegadL链接查看我的增强型答案。我会尝试整理一下帖子,抱歉,这是我在这里的第一篇帖子。理想情况下,最好让程序按名称(字符串)提示文件夹与数字不同,只有文件夹中列出的文件需要使用数字进行输入。Megals会自动按名称列出文件夹,因此用户输入文件夹名称,获取文件列表,然后询问文件编号会更直观。Cmd没有简单的复制粘贴导致所有这些lol。我来看看您的代码在这里。如果您选中cmd窗口的系统菜单/设置/选项选项卡中的
快速编辑模式
插入模式
,复制和粘贴将起作用(在最近的win10中,也可以使用Ctrl+V进行粘贴)用鼠标拖动进行标记,然后右键单击进行复制。您也可以使用
dir | clip.exe将输出直接重定向到剪贴板。这是在Win7系统上,因此cmd仍然有点笨拙。不过,使用管道到clip还是很方便的。
@echo off
for /f "tokens=1,* delims=:" %%A in ('megals -e /Root/ ^|findstr /n "." ') do (
  set Item[%%A]=%%B
  Echo %%A %%B
)
set /p choice=Select #:
Call Echo Choice:%%Item[%choice%]%%
@echo off
for /f "tokens=1,* delims=:" %%A in ('megals -e /Root/ ^|findstr /n "." ') do (
  set Folder[%%A]=%%B
  Echo %%A %%B
)
set /p choice=Select #:
Call Set Folder=%%Folder[%choice%]%%

for /f "tokens=1,* delims=:" %%A in ('megals -e %Folder% ^|findstr /n "." ') do (
  set Link[%%A]=%%B
  Echo %%A %%B
)
set /p choice=Select #:
Call Set Link=%%Link[%choice%]%%

megadl %Link%
@echo off
for /f "tokens=1,* delims=:" %%A in ('megals -e /Root/anime ^|findstr /n "." ') do (
set Item[%%A]=%%B
Echo %%A %%B
)
set /p choice=Select #:
Call Echo %%Item[%choice%]%%

for /F "tokens=*" (`%%Item[%choice%]%%`) do (
set "var1=%%A"
Megadl !Var1!
)
pause