我有這樣的命令: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