我需要编写一个批处理脚本,让用户了解文件名。
例如,用户启动.bat文件,选择“删除文件”选项,脚本等待文件名,然后用户将其写入一行,如file1.txt file2.txt file3.txt file4.txt
。
如何获取数组元素之类的文件名以便以后使用?
答案 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"
)