我有这样的命令:1创建一个文本文件1,并将其保存到目录
For /l %%n in (1,1,1) do echo welcome >> "C:\Users\Documents\Backup\TestingFile%%n.txt"
它创建了一个文件,当你下一次运行它,它会覆盖。它应该在每次运行时创建一个文件。 例如,你运行一个脚本两次它应该2个文件,但它不。
任何人都可以帮我吗?
我有这样的命令:1创建一个文本文件1,并将其保存到目录
For /l %%n in (1,1,1) do echo welcome >> "C:\Users\Documents\Backup\TestingFile%%n.txt"
它创建了一个文件,当你下一次运行它,它会覆盖。它应该在每次运行时创建一个文件。 例如,你运行一个脚本两次它应该2个文件,但它不。
任何人都可以帮我吗?
原来你是问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循环正在做... 原来的循环首先是欢迎,然后稍微修改一个“更受欢迎” 有意义吗?
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>
如果你想在批处理文件来创建一个新的文件,每次运行它时,你需要先检查所有以前的文件的存在时间。
@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
'>>附加到指定的文件。如果您想替换以前的文件,请改用'>'。 –
文件名中的唯一变量是'%% n',它总是相同的(在这种情况下为1,但如果从1-5开始运行循环,它将始终为这些值),因此相同的文件名将会使用。如果每次都想生成新文件,则需要引入更多变量(例如时间戳)。 –
@JasonFaulkner你可以帮我添加一个时间戳变量2分钟使用上述命令。 – Shaw