所以我有一个程序正在创建一个名为" demo.dem"的文件。我现在正在做的是将它移动到另一个文件夹。我想要一个批处理脚本来移动文件来自" C:\ foo"到" C:\ bar"这本身很容易,但该文件将有多个文件,名为" demo.dem"所以我需要它根据文件夹中的内容添加一个新数字。可以说我已经在文件夹中有了1-5的演示版。然后下一个需要是" demo6.dem"下面我有一些代码,但我不是批处理专家。
this
你可以说这不会奏效。有谁知道如何让它正常工作? (如果您觉得可以更好地说出来,请编辑帖子。)
答案 0 :(得分:2)
这可能不是最优雅的方式,因为它只是迭代直到成功,但它应该工作:
@echo off
set counter=1
:retry
if NOT EXIST c:\bar\demo%counter%.dem (
move c:\foo\demo.dem c:\bar\demo%counter%.dem
) else (
set /a counter=%counter%+1
goto retry
)
echo.
echo Created c:\bar\demo%counter%.dem!
echo.
set counter=
答案 1 :(得分:0)
这并不完全是你想要做的,但目标是通过变量%RANDOM%
和%TIME%
作为名称来实现,但无论如何,以下应该可以胜任。
注意:命令FOR
搜索连字符-
和点.
所包围的数字,即。演示001.dem
因此,重要的是要尊重重命名掩码,否则稍后脚本可能无法检测到最大数字。
如果您想要更改模板,则需要您处理设置token
和delims
。
@echo off
echo List directory
dir /b C:\bar\ |sort /r
for /f "tokens=2 delims=-." %%a in ('dir /b C:\bar\demo-???.dem ^|sort /r ^|findstr /r [0-9]') do (
set "num=%%a"
goto done
)
:done
set /a "num=%num%+1"
dir /b |sort /r
echo the highest number found is %num% -1
move c:\foo\demo.dem c:\bar\demo-%num%.dem
dir /b C:\bar\ |sort /r
<强>更新强>
我编辑了Dir
命令的掩码,仅列出具有特定掩码(dir /b C:\bar\demo-???.dem
)的文件,以保持文件正确排序,否则如果你有1-2位数字,前面没有0的文件应该打破排序。
示例:假设您对这一堆文件进行排序:demo-009.txt,demo-010.txt,demo-3.txt;如果没有遮罩(dir /b demo-???.txt
),您将获得demo-3.txt作为最高编号。所以编号前面的0很重要。