将用户输入拆分为数组元素

时间:2013-09-14 14:03:36

标签: batch-file

我需要编写一个批处理脚本,让用户了解文件名。

例如,用户启动.bat文件,选择“删除文件”选项,脚本等待文件名,然后用户将其写入一行,如file1.txt file2.txt file3.txt file4.txt

如何获取数组元素之类的文件名以便以后使用?

2 个答案:

答案 0 :(得分:1)

setlocal EnableDelayedExpansion

:deleteFiles
set /P "filenames=Enter file names to delete: "

rem Grab filenames in an array
set n=0
for %%a in (%filenames%) do (
   set /A n+=1
   set "filename[!n!]=%%~a"
)

rem For example, to process the filenames:
for /L %%i in (1,1,%n%) do (
   echo %%i- !filename[%%i]!
)

文件名列表必须用空格(或逗号或分号)分隔;如果名称包含空格,则必须用引号括起来。

有关数组的更多信息,请参阅this post

答案 1 :(得分:1)

没有delayed expansion的版本:

@ECHO OFF &SETLOCAL
set "filepattern=*.txt"
for /f "tokens=1*delims=:" %%a in ('dir /b /a-d "%filepattern%"^|findstr /n $') do (
   set "filename[%%a]=%%~b"
)

for /f "tokens=2delims==" %%a in ('set "filename"') do (
    echo "%%~a"
)