使用批处理脚本将文件名与文件编号组合在一起

时间:2015-06-12 14:52:53

标签: batch-file count

我试图对特定文件夹中的文件进行编号。我的目标是输出字母位置和文件名。因此对于包含例如两个文件的文件夹( 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

你发现我的错误吗?

2 个答案:

答案 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
)