我有这个命令:
For /l %%n in (1,1,1) do echo welcome >> "C:\Users\Documents\Backup\TestingFile%%n.txt"
它会创建一个文件,并在下次覆盖时运行它。它应该在每次运行时创建一个文件。 例如,你运行一个脚本两次它应该是2个文件,但它没有。
有人可以帮助我吗?
答案 0 :(得分:0)
原来你要求FOR命令计算......
从一个开始
踩一个
结束于一。
所以FOR正在做你要求的事情,所以只获得一个文件是有意义的。让我们暂时忽略文件输出部分,看看FOR正在做什么。
以下是FOR命令/ s帮助文本的摘录:
C:\tmp>for /?
...etc...
FOR /L %variable IN (start,step,end) DO command [command-parameters]
The set is a sequence of numbers from start to end, by step amount.
So (1,1,5) would generate the sequence 1 2 3 4 5 and (5,-1,1) would
generate the sequence (5 4 3 2 1)
为了好玩,让我们跳过“写入文件部分”并查看for循环正在做什么...... 原来的for循环首先是Welcome,然后是一个稍微修改过的“欢迎” 有意义吗?
C:\tmp>type foo.bat
echo off
For /l %%n in (1,1,1) do echo welcome, n=%%n
For /l %%n in (1,1,3) do echo ** more welcome, n=%%n **
C:\tmp>foo.bat
C:\tmp>echo off
welcome, n=1
** more welcome, n=1 **
** more welcome, n=2 **
** more welcome, n=3 **
C:\tmp>
答案 1 :(得分:0)
如果您希望批处理文件每次运行时都创建一个新文件,则需要先检查所有以前文件是否存在。
@echo off
set num=0
:LOOP
set /a num+=1
IF EXIST "C:\Users\Documents\Backup\TestingFile%num%.txt" GOTO LOOP
echo welcome >"C:\Users\Documents\Backup\TestingFile%num%.txt"
此代码中的缺陷是,如果您创建了4个文件并且有人删除了文件2或3,则下次运行时将创建该文件而不是文件5.