我试图对特定文件夹中的文件进行编号。我的目标是输出字母位置和文件名。因此对于包含例如两个文件的文件夹( hello.txt 和 world.txt ),我希望脚本输出如下内容:
File 1 is hello
File 2 is world
这是我的剧本:
@echo off
cls
setlocal enabledelayedexpansion
set folder=c:\test
set count=0
for /r "%folder%" %%a in (*.*) do (
set file_!count!=%%~na
set /a count+=1
call :SUB
)
if !count!==0 goto :EOF
goto :EOF
:SUB
echo File !count! is file_%count%
这是输出:
File 1 is file_1
File 2 is file_2
正如您所看到的,文件名的输出并不符合我的期望。
我尝试了文件名变量的不同变体:
变式2:
%file_!count!%
输出2:
File 1 is world
File 2 is world
变式3:
%file_count%
输出3:
File 1 is
File 2 is
你发现我的错误吗?
答案 0 :(得分:0)
将变量名称作为参数传递给被调用的例程
...
call :SUB !count! file_!count!
....
:SUB
echo echo File %1 is !%2!
答案 1 :(得分:0)
:SUB代码必须是这个:
:SUB
echo File !count! is !file_%count%!
这是做同样事情的另一种方式:
@echo off
cls
setlocal enabledelayedexpansion
set folder=c:\test
for /F "tokens=1* delims=:" %%a in ('dir /B /A-D /S "%folder%" ^| findstr /N "^"') do (
set file_%%a=%%~nb
echo File %%a is %%b
)