我想在名称为file01.txt,file02.txt,...,file10.txt,file11.txt的许多文件中输出一些数据。我有以下脚本:
setlocal enabledelayedexpansion
set /a cnt = 0
for /f %%f in ('dir /b "../in/"') do (
set /a cnt += 1
get_data > ../out/file!cnt!.txt
)
但是我得到文件file1.txt,file2.txt。如何格式化并添加所需的零?
答案 0 :(得分:3)
setlocal enabledelayedexpansion
set /a cnt = 100
for /f %%f in ('dir /b "..\in\"') do (
set /a cnt += 1
get_data > ..\out\file!cnt:~-2!.txt
)
批次中的子字符串是从%var:~m,n%
获得的,其中,n
是可选的; m
是从字符串开始的字符数,如果是负数则从结尾开始。 ,n
正=返回的最大长度;负=从结尾的字符中的结束位置; missing =在m
答案 1 :(得分:1)
解决方法:
setlocal enabledelayedexpansion
set /a cnt=0
for /f %%f in ('dir /b "../in/"') do (
set /a cnt += 1
set s="../out/file"
if !cnt! lss 10 (
set s="../out/file0"
)
get_data > !s!!cnt!.txt
)