2016-02-09 43 views
0

我有很多文件夾,我需要從任何文件夾刪除其中最舊的文件,我需要刪除的文件數量改變了任何迭代,所以我試圖做一個循環,在任何迭代做日期排序,後文件頂部的最舊文件我做「skip = variable」這個變量改變了任何迭代,它不起作用。如何跳過在cmd中運行時更改的行數?

有人有任何想法如何解決它在批處理文件? 謝謝!

+0

我們需要一些代碼來幫助你。謝謝 – acostela

+0

所以你追加「skip =變量」到你想要跳過的文件,而不是跳過它們?這是問題嗎? – Neil

+0

FOR/F「tokens = 1,2 delims =」%% i in(C:\ folder \ varibales_file.txt)do(set numOfFiles = %% j&pushd %% i&(for/f「skip = numOfFiles」 %% F in('dir C:\ folder_path_to_delete \ %% i/b/o-d')do(rd/s/q C:\ folder_path_to_delete \ %% i \ %% F))&popd) – Reutm

回答

1

for /F命令("skip... delims... tokens"等)的選項可以for /F命令被解析之後被改變。您需要更改在不同的子程序"skip=!numOfFiles!"值,所以for /F命令每次執行時解析:

@echo off 
setlocal EnableDelayedExpansion 

FOR /F "tokens=1,2 delims= " %%i in (C:\folder\varibales_file.txt) do (
    set numOfFiles=%%j 
    pushd %%i 
    call :Sub !numOfFiles! 
    popd 
) 
goto :EOF 


:Sub numOfFiles 
for /f "skip=%1 delims=" %%F in ('dir "C:\folder_path_to_delete\%%i" /b /o-d') do (
    rd /s /q "C:\folder_path_to_delete\%%i\%%F" 
) 
+0

嗨,感謝您的回答,我試着說出您的看法,但這不起作用,我得到一個錯誤:」系統在命令上不正確「 這裏是代碼: 關閉@echo SETLOCAL EnableDelayedExpansion 淨使用\\海法的NAS \ build_results \ CleanupLogs \ reut_cleanup FOR/F 「令牌= 1,2 delims =」 %% i的(C: \ folder \ varibales_file.txt) do(set numOfBuild = %% j pushd %% i call:Sub!numOfBuild! POPD ) 轉到:EOF :子numOfBuild FOR/F 「跳過=%1 delims =」 %%的F ('DIR C:\ folder_path_to_delete \ %% I/B /鄰二d ') do(rd/s/q C:\ folder_path_to_delete \ %% i \ %% F) – Reutm

+0

我已將它發送了幾行,但它顯示爲一行 – Reutm

+0

恐怕我不理解你。 ..您必須將我的代碼插入.BAT文件,然後執行該文件! – Aacini

0

我做了以下更改「一行代碼」:

  • 重新格式化爲使用numOfOFiles作爲延遲變量(你做它作爲一個字符串的適當性和可讀性的批處理文件

  • 這可能無法正常工作)

  • 封閉所有的路徑/文件名在引號中,適當的工作,在direcotries空格或文件名

  • 新增delims=出於同樣的原因
  • 刪除ECHO如果輸出滿足您。

(corected代碼而已,還沒有檢查它,你想要什麼)

@echo off 
setlocal enabledelayedexpansion 
FOR /F "tokens=1,2 delims= " %%i in (C:\folder\varibales_file.txt) do (
    set numOfFiles=%%j 
    pushd %%i 
    for /f "skip=!numOfFiles! delims=" %%F in ('dir "C:\folder_path_to_delete\%%i" /b /o-d') do (
    ECHO rd /s /q "C:\folder_path_to_delete\%%i\%%F" 
    popd 
) 

你確定,你要使用rd(刪除目錄),而不是del(刪除文件) ?

+0

謝謝,我試過了,出現錯誤「系統找不到文件...「雖然文件存在 – Reutm