2015-11-25 48 views
0

我有這樣的命令:1創建一個文本文件1,並將其保存到目錄

For /l %%n in (1,1,1) do echo welcome >> "C:\Users\Documents\Backup\TestingFile%%n.txt" 

它創建了一個文件,當你下一次運行它,它會覆蓋。它應該在每次運行時創建一個文件。 例如,你運行一個腳本兩次它應該2個文件,但它不。

任何人都可以幫我嗎?

+1

'>>附加到指定的文件。如果您想替換以前的文件,請改用'>'。 –

+2

文件名中的唯一變量是'%% n',它總是相同的(在這種情況下爲1,但如果從1-5開始運行循環,它將始終爲這些值),因此相同的文件名將會使用。如果每次都想生成新文件,則需要引入更多變量(例如時間戳)。 –

+0

@JasonFaulkner你可以幫我添加一個時間戳變量2分鐘使用上述命令。 – Shaw

回答

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循環正在做... 原來的循環首先是歡迎,然後稍微修改一個「更受歡迎」 有意義嗎?

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> 
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

+0

如果我想讓用戶在創建文件時命名文件,請告訴我如何讓用戶命名該文件?謝謝你的代碼 – Shaw

+0

@emraan,你可以使用'SET'命令和'/ P'選項來提示用戶輸入。 http://ss64.com/nt/set.html – Squashman

相關問題