我正在创建一个批处理文件,其中我需要列出指定文件夹的所有文本文件名,然后从数组中存储和检索相同的文件.是否可以在批处理文件中?我列出测试文件的当前代码如下所示
dir *.txt /b
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢.
小智 12
模拟阵列
String是批处理文件中唯一的变量类型.但是,可以使用几个相同名称的变量来模拟数组,除了尾随的数字ID,例如:
Array[1] Array[2] Array[3] Array[4] etc...
Run Code Online (Sandbox Code Playgroud)
我们可以将每个文件名存储到这些变量中.
检索命令输出
第一步是将命令输出放入变量中.我们可以使用for /f循环.
for /f %%G in ('dir *.txt /b') do set filename=%%~G
Run Code Online (Sandbox Code Playgroud)
该('')子句和/f选项指定收集命令的输出.请注意,由于可变覆盖,您获得的文件名始终是显示的最后一个.这可以通过附加来解决,但超出了本答案的范围.
为文件提供ID
在这种情况下,我将filename使用尾随ID 命名数组[n],其中n是数字ID.
setlocal enableDelayedExpansion
set /a ID=1
for /f "delims=" %%G in ('dir *.txt /b') do (
set filename[!ID!]=%%~G
set /a ID+=1
)
set filename
endlocal
Run Code Online (Sandbox Code Playgroud)
有两点需要注意:
我已添加"delims="到循环中以确保它与默认分隔符一起正常工作.
我换成%ID%用!ID!,因为延迟扩展.简而言之,当禁用延迟扩展时,整个for循环在运行之前表示,具有新值的变量不是更新的block(())结构; 如果启用,则更新所述变量.!ID!表示每个循环中需要更新.
| 归档时间: |
|
| 查看次数: |
21979 次 |
| 最近记录: |