2016-04-15 51 views
0

我是批量編碼的新手,所以請放心。批處理編碼For循環創建不同名稱的文件

請考慮下面的代碼:

FOR /L %%G IN (1,1,20) DO (break>"C:\New folder\%%G+1.txt") 

我試圖創建與上面的代碼的文本文件,但我發現了1 + 1,2 + 1,3 + 1 ..等等上。

有沒有辦法不接觸參數,但要增加參數%%G+1?它不是以字符串形式輸出,而是給了我一個數字。

請指導我。感謝

更新:我想這下面的代碼

:MakeTextFiles 
setlocal enabledelayedexpansion 
set "var=1" 
FOR /L %%G IN (1,1,20) DO 
(  
    set /a "var=%var%+1" 
    break>"C:\New folder\!var!.txt" 
) 
EXIT /B 

但它不工作。

+1

再次閱讀[延遲擴展](http://stackoverflow.com/questions/30282784/combining-all-mp4s-in-directory-with-ffmpeg/30284028#30284028)和「(必須在相同的物理線路如做「從Magoos的答案 – Stephan

+0

明白了!謝謝。還是新的,所以可能會出現語法上的一些錯誤。 – NewbieCoder

+0

是的 - 批處理語法不一致,有時不太直觀。不介意 - 那麼你不會產生語法錯誤的日子已經非常遙遠:) – Stephan

回答

1
setlocal enabldelayedexpansion 
FOR /L %%G IN (1,1,20) DO 
(
    set /a _new=%%G+1 
    break>"C:\New folder\!_new!.txt" 
) 

請參閱文章hundrds對SO有關delayedexpansion

兩個問題,您的最新變化:

(必須在相同的物理線路的do

set /a var=!var!+1 

set /a var=var+1 

set /a var+=1 

set /a訪問的var運行時間值,!var!var運行時間值,%var%是分析時值var - 遇到for時的值。

1

你並不需要在這裏算術加法,只是改變了一組您遍歷:

FOR /L %%G IN (2,1,21) DO (break>"C:\New folder\%%G.txt") 

如果你一定要算術:

setlocal enabledelayedexpansion 
FOR /L %%G IN (1,1,20) DO (
set /a var=%%G+1 
break>"C:\New folder\!var!.txt") 

你需要看看這裏:

calculating the sum of two variables in a batch script

and here delayed expansion

+0

我不想觸摸參數。 – NewbieCoder

+0

我添加了一個算術答案的鏈接。 – CodeMonkey

+1

此外,您需要[延遲擴展](http://stackoverflow.com/a/30284028/2152082) – Stephan