2012-12-27 71 views
3

嗯,我有點卡在我的代碼的以下部分。 該程序將計算文件usernames_list.txt中的行數。每行都有一個我想輸入的文件夾的名稱。我希望該程序能夠輸入列表中的每個文件夾,創建一個名爲test_1的文件,然後轉到它的父文件夾。這應該重複,直到它到達列表的末尾。 我在做對吧? :/ 出於某種原因,「跳過」選項不會接受我的變量。命令:for |它不會接受我的變量skip =%var%選項

for /f %%C in ('Find /V /C "" ^< usernames_list.txt') do set lines=%%C 
    set times=0 
    set /A skip_value=%lines%-(%lines%-%times%) 
    :redo 
    FOR /F "skip=%skip_value%" %%b IN (usernames_list.txt) DO (
    cd %%b 
    echo > test_1 
    cd .. 
    set /A times=%times%+1 
    if /i {%times%}=={%lines%} (goto continue) 
    goto redo 
    ) 
    :continue 
    pause 
+0

for循環中的if/i {%times%} ...不會做你想要的。 %var%擴展是在執行期間解析循環時完成的。如果你想測試變量值 – MJZ

回答

5

作爲當前寫入,set /A skip_value=%lines%-(%lines%-%times%)將總是爲0,因爲次= 0

跳過值必須是> = 1語法錯誤設置SKIP = 0的結果。

在我看來,您計算skip_value的邏輯是有缺陷的。但是,即使你修復邏輯,你還擔心是< = 0。我通過定義與整個選項文本SKIP變量處理這種情況只值如果該值> = 1

set "skip=" 
if %skip_value% geq 1 set "skip=skip=%skip_value%" 
for /f "%skip%" %%b in (usernames_list.txt) ... 

您可能需要額外的FOR/F選項。這不是問題。例如:

for /f "%skip% delims=" ... 
+0

Ooops,你想要使用延遲擴展,但我不知道SKIP值必須> = 1。我到處搜索,沒有發現類似的內容。謝謝!我跳過第一行並不是問題,因爲如果第一行產生問題,則第一行可能不需要是文件夾名稱。再次感謝。 :) – Leajian